我在我的网页上实施了类似Facebook的评论,但我想弄清楚如何让视图正常工作。
以下是评论如何运作的代码:
评论控制器
class CommentsController < ApplicationController
def create
@micropost = Micropost.find(params[:micropost_id])
@comment = Comment.new(params[:comment])
@comment.micropost = @micropost
@comment.user = current_user
if @comment.save
redirect_to(:back)
else
render 'shared/_comment_form'
end
end
end
评论表单视图
<%= form_for([micropost, @comment]) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_field :comment_content %>
</div>
<button class="btn" type="submit">
Comment
</button>
<% end %>
我正在努力弄清楚如何在提交后最好地显示这些评论。我可以用它来构建视图??
comment.html.erb
<%= simple_format(comment.content) %>
<% end %>
答案 0 :(得分:0)
你可以做这样的事情
class CommentsController < ApplicationController
def create
@micropost = Micropost.find(params[:micropost_id])
@comment = Comment.new(params[:comment])
@comment.micropost = @micropost
@comment.user = current_user
if @comment.save
flag = true
else
flag = false
end
respond_to do |format|
format.html {flag ? redirect_to(:back) : render 'shared/_comment_form'}
format.js
end
end
end
将您的表单更改为ajaxified
<%= form_for([micropost, @comment], remote: true) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_field :comment_content %>
</div>
<button class="btn" type="submit">
Comment
</button>
<% end %>
然后稍微编辑你的视图
评论/ comment.html.erb
<%= render partial: 'comments/comment', locals: {comment: @comment} %>
,部分将是
_comment.html.erb
<div id="comment-<%= comment.id%>">
<%= simple_format(comment.content) %>
<% end %>
</div>
然后在comments / create.js.erb中执行
$("#comments_container").prepend(' <%=j render partial: "comments/comment", locals: {comment: @comment} %>');
而不是前置,你可以做任何你想要的动画。您也可以附加,具体取决于您希望如何对评论进行排序
注意我正在使用jQuery。 #comments_container是您要放置评论的div
请注意,create.js.erb基本上是评论控制器中创建操作的js视图,因此它可以访问创建操作具有的任何变量
note2:我使用的是ruby 1.9哈希格式
note3:我将评论命名为#comment-<%= comment.id %>
,以便您以后可以删除它或以其他方式处理它,例如
def destroy
@comment = Comment.find(params[:id])
respond_to do |format|
format.js
end
end
然后在destroy.js.erb做
$("#comment-<%= @comment.id %>").remove();
将删除该div
确保有jquery_ujs和jquery gem / files,这就是它......