我有一个问题模型:
class Question < ActiveRecord::Base
has_many :answers, :dependent => :destroy
这有很多答案:
class Answer < ActiveRecord::Base
belongs_to :question, :counter_cache => true
validates :body,
:presence => true,
:length => {:minimum => 3, :maximum => 4096}
我在问题页面下有一个表单,所以我可以提交答案。
问题是,在我创建新答案后,我被重定向回问题,所以我看不到任何验证错误。
有谁知道如何从问题页面上的答案中查看验证错误?
这是views / questions / show.html.erb
<%= render :partial => @answers %>
<%= form_for [@question, Answer.new] do |f| %>
<div class="formline">
<div class="formlabelcenter"><%= f.label :body, "New Answer" %></div>
<div class="formfield"> <%= f.text_area :body, :class => "mceEditor" %></div>
</div>
<div class="formline">
<div class="submit">
<%= f.submit "Add Answer" %></div>
</div>
<% end %>
当我试图提出问题时,它让我:
http://0.0.0.0:3000/questions/question-name/answers
而不是
http://0.0.0.0:3000/questions/question-name
答案 0 :(得分:1)
您没有在显示问题表单的视图代码中显示错误,请尝试此操作(注意将Answer.new更改为@answer,因此这将显示在控制器中验证失败的相同模型)
<%= form_for [@question, @answer || Answer.new] do |f| %>
<% if @answer && @answer.errors.any? %>
<div class='errors'>
<h2>
<%= pluralize(@answer.errors.count, "error") %>
prohibited this user from being saved:
</h2>
<ul>
<% @answer.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<% # your view code here %>
<% end %>
答案 1 :(得分:0)
检测到控制器中的错误时,请将其消息存储在flash[:error]
中。然后,在视图中,检查:error
哈希中是否存在flash
。如果存在,则将其显示为错误消息。