运行Rails 3.2.1。
我浏览了Ruby on Rails网站上的“入门”指南。我已经建立了一个博文,有人可以评论这些帖子。
我修改了示例,以便在输入不验证的注释(没有名称或注释文本)时显示错误。
(帖子有多个评论等)
但是,我如何让Rails将这个有问题的评论放回到表单而不是页面?
这是我在评论控制器中的创建方法:
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.build(params[:comment])
respond_to do |format|
if @comment.save
format.html { redirect_to(@post, :notice => 'Comment was successfully created.') }
else
format.html { render 'posts/show' }
end
end
端
以下是我发布的show.html.erb:
<%= render @post %>
<h3>Comments</h3>
<%= render @post.comments %>
<h3>Add a comment</h3>
<%= render "comments/form" %>
<p>
<% if user_signed_in? %>
<%= link_to 'Edit', edit_post_path(@post) %> |
<% end %>
<%= link_to 'Back', posts_path %>
</p>
这是我的评论部分:
<%= form_for([@post, @post.comments.build]) do |f| %>
<%= render "shared/error_messages", :target => @comment %>
<div class="field">
<%= f.label "Name" %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body %>
</div>
<div class="actions">
<%= f.submit "Add Comment!" %>
</div>
<% end %>
这是我的评论部分:
<p>
<strong><%= comment.name %></strong><br />
<%= comment.created_at.try(:strftime, "on %A, %B %d %Y at %H:%M:%S") %><br />
<%= simple_format(h(comment.body), :sanitize => true) %>
</p>
答案 0 :(得分:0)
在您从错误中返回时的表单中。
<% if @comment.errors.any? %>
<div id="errorExplanation">
<h2><%= pluralize(@comment.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% @comment.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>