rails 3.0.9和escape_javascript仍无法正常工作?

时间:2011-07-14 14:54:56

标签: jquery ruby-on-rails ruby ruby-on-rails-3

遇到一个奇怪的问题。我确信它曾经工作并在此版本中修复(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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您需要将<%= escape_javascript(...) %>部分包含在引号中:

$('#pending_item').html("<%= escape_javascript(render(:partial => 'stream_item'))%>");