Rails:js.erb没有在客户端执行?

时间:2014-01-29 03:00:22

标签: javascript jquery ruby-on-rails ruby

我在让客户端运行响应脚本时遇到问题。我对rails很新,我不确定remote:true是做什么的。我有以下链接:

<%= link_to "#{p.title}", post_path(p), remote: true %> 

当我点击它时,它会指向显示动作,该动作会呈现帖子内容,我想将内容解析为div。我的show.js.erb看起来像这样

$("#content").html("<h2><%= @post.title %> </h2><p><%= @post.body %></p>");

当我点击链接时,我得到了回应。

Started GET "/posts/14" for 127.0.0.1 at 2014-01-28 10:51:12 -0800
Processing by PostsController#show as JS
Parameters: {"id"=>"14"}
Post Load (0.2ms)  SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1  [["id", "14"]]
Rendered posts/show.js.erb (0.2ms)

我确实得到了整个jquery代码,看着http响应,但不知怎的,它没有得到执行。

1 个答案:

答案 0 :(得分:0)

show.js.erb中使用escape_javascript作为:

$("#content").html("<h2><%= escape_javascript @post.title %> </h2><p><%= escape_javascript @post.body %></p>");

更清洁和干燥的方法是移动以下内容:

<h2><%= @post.title %> </h2><p><%= @post.body %></p>` 

到部分并在show.js.erb中呈现该部分。

# _post_detail.html.erb
<h2><%= @post.title %> </h2><p><%= @post.body %></p>

然后在show.js.erb

$('#content').html(<%= escape_javascript render("post_detail") %>);