当我在创建操作上遇到此问题时,我正在做一些ajax功能。
在我的create.js.erb中:
$("follow_form").update('<%= escape_javascript(render("users/unfollow")) %>')
$("followers").update('<%= "#{@user.followers.count} followers" %> ')
我的部分用户/ _unfollow.html.erb:
<%= form_for(current_user.relationships.find_by_followed_id(@user),
:html => { :method => :delete },
:remote => true) do |f| %>
<div class='actions'>
<%= f.submit 'Unfollow' %>
</div>
<% end %>
点击时,“跟随”按钮基本上会变为“取消关注”。但是,单击该按钮时,这就是escape_javascript返回的内容:
<form accept-charset=UTF-8 action=/relationships class=new_relationship data-remote=true id=new_relationship method=post>
<div style=margin:0;padding:0;display:inline>
<input name=utf8 type=hidden value=✓ />
<input name=authenticity_token type=hidden value=YwOC5/xVq5FQFJxOiKXR8nGV7/jGMsVEX4OLuWJB56I= />
div>
<div>
<input id=relationship_followed_id name=relationship[followed_id] type=hidden value=7 />
div>
<div class=actions>
<input id=relationship_submit name=commit type=submit value=Follow />
div>
form>
你可以看到几乎每个结束标签都缺失'&lt; /”。因此按钮不起作用。
然后我开始玩javascript include。当我改变
时,这个ajax功能将起作用<%= javascript_include_tag :defaults %>
到
<%= javascript_include_tag 'prototype' %>
为什么这样做?