遇到一个奇怪的问题。我确信它曾经工作并在此版本中修复(https://github.com/rails/rails/issues/1553)。我有一个简单的控制器
class MessagesController < ApplicationController
def create
@msg = Message.new(params[:message])
@msg.user_id = session[:user_id]
@msg.room_hash = session[:current_room_hash]
@msg.save!
end
end
提交它的表单:
<%= form_for Message.new, :html => {:id => "post_submit_form", :remote => true} do |f|%>
<fieldset>
<%= f.text_area :message, :id => 'post' %>
<%= f.submit 'Post', :class => "button post" %>
</fieldset>
<% end %>
用于呈现html的create.js.erb文件:
$('#pending_item').html(<%= escape_javascript(render(:partial => 'stream_item'))%>);
使用jquery 1.6.1和最新的rails.js我通过绑定到ajax:error继续在firebug中获取parsererror。我认为是escape_javascript的一个问题,好像它只是执行以下操作很有效:
$('#pending_item').html('<h2>hello</h2>');
我知道部分工作,因为它反复用于显示页面加载的时间。另外,如果我有:
<h2>hello</h2>
在部分我有相同的parsererror
我确信我正在使用3.0.9,因为当我启动应用程序时它会这样说:
Rails 3.0.9 application starting in development on http://0.0.0.0:3000
有什么想法吗?
答案 0 :(得分:2)
您需要将<%= escape_javascript(...) %>
部分包含在引号中:
$('#pending_item').html("<%= escape_javascript(render(:partial => 'stream_item'))%>");