js.erb文件中simple_form_for标记中缺少块错误

时间:2013-07-30 21:58:09

标签: javascript ruby-on-rails erb simple-form

我正在尝试显示一个评论列表和一个表单,以便使用AJAX发表新评论。 simple_form_for块给出以下错误: DeliveryNegotiations#show中的ArgumentError 显示/home/action/socialpost/app/views/delivery_negotiations/show.js.erb,其中第10行引发: 缺少块

这是show.js.erb文件:

$("#conversation").html(
    '<% @comments.each do |com| %> \
        <strong> <%=j "User " + com.author_id.to_s + ":" %> </strong> \
        <%=j (com.comment || " ") %> \
        <br/> \
    <% end %> \
  <fieldset> \
    <legend> \
      New comment \
    </legend> \
    <%=j form_for ([@delivery_request, @delivery_negotiation, @comment]) do |builder| %> \
      <%=j builder.text_area :comment %> \
      <%=j builder.hidden_field :author_id, value: current_user.id %> \
      <%=j builder.submit %> \
    <% end %> \
  </fieldset>\
');

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

请将代码放入一个部分并从js.erb文件中渲染,因为它很容易进行更改。

在_comments_form.html.erb

  <% @comments.each do |com| %>
      <strong> <%= "User " + com.author_id.to_s + ":" %> </strong> 
      <%= (com.comment || " ") %>
      <br/>
  <% end %>


  <fieldset> 
    <legend> 
      New comment
    </legend> 
    <%= form_for ([@delivery_request, @delivery_negotiation, @comment]) do |builder| %> 
      <%= builder.text_area :comment %> 
      <%= builder.hidden_field :author_id, value: current_user.id %> 
      <%= builder.submit %>
    <% end %> 
  </fieldset>

在你的js.erb文件中

$("#conversation").html("<%=escape_javascript(render 'comments_form')%>");

我希望这会对你有所帮助。