我有一个简单的应用程序,其中包含有很多注释的帖子。
我可以使用以下表单从帖子#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.com并在提交表单时重新呈现部分内容?
答案 0 :(得分:4)
您目前是否通过posts#create
动作渲染了任何内容?无论哪种方式,您都希望呈现create.js.erb
(在app/views/posts/
中创建此文件),如@jvnill所说:
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
描述的问题,因为您尝试从资源进行渲染。将它放在您的views目录中。
答案 1 :(得分:2)
可以这样做。在create.js.erb
中,尝试
$('#comments-container').html('#{escape_javascript render('posts/comments')}')
确保声明在partial中使用的任何实例变量。
更新:更好的方法是在div的末尾添加注释。