我正在尝试使用ajax在rails 4中创建一个注释区域。我的目标是在不加载页面的情况下在同一页面中创建评论及其输出。我添加了一些代码。当我单击“添加评论”按钮时,数据输入到DB,但未反映在同一页面上。如果有任何想法,请与我分享,谢谢。
我的代码如下:
在评论控制器中:
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.create
@comment.body = params[:comment]["body"]
respond_to do |format|
@comment.save
format.html { redirect_to @article }
format.js
end
end
在show.html.erb中的views / articles下
<div class="col-xs-12 col-sm-12">
<h2 class="text-center"><%= @article.title.html_safe %></h2>
<p><%= @article.body.html_safe %></p>
<h2>Comments</h2>
<div id="comments">
<!-- <p><%= render :partial => @article.comments %></p> -->
<%= render :partial => 'comments/comment', :collection => @article.comments %>
</div>
<%= form_for([@article, Comment.new], :remote => true) do |f| %>
<p>
<%= f.label :body, "New comment" %><br/>
<%= f.text_area :body, type:"text", tabindex: "6", class: "form-control", placeholder: 'your comment', rows: "4", required: true %>
</p>
<p><%= f.submit "Add comment" %></p>
<% end %>
</div>
_comment.html.erb在view / comments下
<%= div_for comment do %>
<p>
<b>
Posted <%= time_ago_in_words(comment.created_at) %> ago
</b>
<br/>
<%= comment.body %>
<%= link_to 'Delete', article_comment_path(comment.article_id, comment.id), method: :Delete, :class => 'btn btn-sm btn-warning', tabindex: "3" %>
<%= link_to 'Edit', article_path(comment.article_id, comment.id), :class => 'btn btn-sm btn-warning', tabindex: "3" %>
</p>
<% end %>
视图/评论下的create.js.erb
page.insert_html :bottom, :comments, :partial => 'comment', :object => @comment
page[:new_comment].reset
config / application.rb
config.action_view.JavaScript_expansions[:defaults] = %w(jquery rails application)
添加了类似的内容:
视图/评论下的create.js.erb
$("#comments").append("<%= escape_javascript(render(:partial => @comment)) %>");
$("#new_comment")[0].reset();
而且它对我有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句