0

コメントのリストと、AJAX を使用して新しいコメントを作成するためのフォームを表示しようとしています。simple_form_for ブロックは次のエラーを返します: DeliveryNegotiations#show の ArgumentError 表示 /home/action/socialpost/app/views/delivery_negotiations/show.js.erb where #10 raise: Missing block

これは 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>\
');

どんな助けでも大歓迎です。

4

1 に答える 1

0

コードを 1 つのパーシャルに入れ、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')%>");

これがお役に立てば幸いです。

于 2013-07-31T13:16:36.247 に答える