ruby-on-rails-3 - Rails 教程中的简单 Ajax 发送请求但不输出 HTML?

标签 ruby-on-rails-3

我正在学习有关在 Rails 上发出 Ajax 请求的教程:

http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/

制作_form远程: <%= form_for(@post, :remote => true) do |f| %>

我的脚本已加载:

  <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>

将 format.js 添加到 posts_controller.rb:

  def create
    @post = Post.new(params[:post])

    respond_to do |format|
      if @post.save
        format.html { redirect_to @post, notice: 'Post was successfully created.' }
        format.js
      else
        format.html { render action: "new" }
        format.js 
      end
    end
  end

创建了create.js.erb:

$('body').html("<h1><%= escape_javaScript(@post.title) %></h1>").append("<%= escape_javaScript(@post.content) %>");

但是当我单击提交按钮时, View 中没有任何反应,但正在创建帖子。 我刚刚在终端中得到这个:

Started POST "/posts" for 127.0.0.1 at 2012-02-06 12:58:02 +0800 Processing by PostsController#create as JS Parameters: {"utf8"=>"✓", "authenticity_token"=>"m4BT19I9aUQ+FwGD3Ub9WqKJc0IqjsPpD8+nOyQNhjo=", "post"=>{"name"=>"asdsad", "title"=>"sadassad", "content"=>"adasdadadad"}, "commit"=>"Create Post"} (0.2ms) begin transaction SQL (86.7ms) INSERT INTO "posts" ("content", "created_at", "name", "title", "updated_at") VALUES (?, ?, ?, ?, ?) [["content", "adasdadadad"], ["created_at", Mon, 06 Feb 2012 04:58:02 UTC +00:00], ["name", "asdsad"], ["title", "sadassad"], ["updated_at", Mon, 06 Feb 2012 04:58:02 UTC +00:00]] (120.0ms) commit transaction Rendered posts/create.js.erb (307.9ms) Completed 500 Internal Server Error in 528ms

ActionView::Template::Error (undefined method `escape_javaScript' for

<#:0xb78ecd0>):

1:    $('body').html("<h1><%= escape_javaScript(@post.title) %></h1>").append("<%= escape_javaScript(@post.content) %>");  

app/views/posts/create.js.erb:1:in _app_views_posts_create_js_erb__76139275_96235900'<br/> app/controllers/posts_controller.rb:45:increate'

Rendered /home/alex/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (9.9ms) Rendered /home/alex/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (3.1ms) Rendered /home/alex/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (19.1ms)

有什么建议可以解决这个问题吗?

最佳答案

该教程中有一个输入错误; escape_javaScript 应该是 escape_javascript (小写)

另请参阅:escape_javascript()

关于ruby-on-rails-3 - Rails 教程中的简单 Ajax 发送请求但不输出 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155747/

相关文章:

ruby-on-rails - 无效的多字节字符 (UTF-8) 错误,Ruby

ruby-on-rails - 用作 block 时如何将类添加到 Rails 选择表单助手

ruby-on-rails-3 - Resque什么时候打开一个redis连接?

ruby-on-rails - 事件记录范围的可互换性和顺序

javascript - 用于 javascript/ajax 可排序表的 Rails 插件

ruby-on-rails-3 - Devise + OmniAuth NoMethodError UndefinedMethod 用户名

mysql - Rails - MySQL 表名的首字母大写

ruby-on-rails - 如何为 link_to block 传递 html?

ruby-on-rails - Rails - 文本不适合我的布局

ruby-on-rails - Rails:FATAL - 用户对等身份验证失败(PG::Error)