1

多くのコメントを持つ投稿を含む単純なアプリケーションがあります。

次のフォームを使用して、posts#show からコメントを作成できます。

<%= form_for @comment, :remote => true, :html => {:'data-type' => 'html', :id =>                 'create_comment_form' }, :'data-update-target' => 'comments-container'$
    <%= f.text_area :content %>
    <%= f.hidden_field :post_id, :value => @post.id %>
    <%= f.submit 'Submit', :disable_with => 'Please wait...', :class => 'submit' %>
<% end %>

そして、コメントを表示します

<div id="comments-container">
  <%= render "posts/comments"  %>
</div>

@post.comments をループします。

フォームが送信されたときに @post.comments を更新してパーシャルを再レンダリングすることは可能ですか?

4

2 に答える 2

4

posts#create現在、アクションから何かをレンダリングしていますか?いずれにせよ、 @ jvnillが言うようcreate.js.erbに(でこのファイルを作成する)をレンダリングする必要があります。app/views/posts/

def create
  # do your thang..
  respond_to do |format|
    format.js do
      # any stuff you want to do when responding to JS
    end
  end
end

これにより、が自動的にレンダリングされますcreate.js.erb。これは次のようになります。

$('#comments-container').html('<%= escape_javascript(render "posts/comments") %>');

編集-renderアセットからレンダリングしようとしているため、説明した問題が発生しています。ビューディレクトリに配置します。

于 2013-03-06T09:51:09.893 に答える
2

それは可能です。でcreate.js.erb、お試しください

$('#comments-container').html('#{escape_javascript render('posts/comments')}')

パーシャル内で使用しているインスタンス変数が宣言されていることを確認してください。

更新:より良い方法は、div の最後にコメントを追加することです。

于 2013-03-06T09:19:48.900 に答える