Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 上的验证具有多个关系Rails3_Ruby On Rails_Ruby On Rails 3_Validation - Fatal编程技术网

Ruby on rails 上的验证具有多个关系Rails3

Ruby on rails 上的验证具有多个关系Rails3,ruby-on-rails,ruby-on-rails-3,validation,Ruby On Rails,Ruby On Rails 3,Validation,我有一个问题模型: class Question < ActiveRecord::Base has_many :answers, :dependent => :destroy 而不是 http://0.0.0.0:3000/questions/question-name 在控制器中检测到错误时,将其消息存储在flash[:error]中。然后,在视图中,检查闪存中是否存在:error。如果存在,则将其显示为错误消息。如果在显示问题表单的视图代码中没有显示错误,请尝试此操作

我有一个问题模型:

class Question < ActiveRecord::Base  
  has_many :answers, :dependent => :destroy
而不是

http://0.0.0.0:3000/questions/question-name

在控制器中检测到错误时,将其消息存储在
flash[:error]
中。然后,在视图中,检查
闪存中是否存在
:error
。如果存在,则将其显示为错误消息。

如果在显示问题表单的视图代码中没有显示错误,请尝试此操作(注意将Answer.new更改为@Answer,这样将显示控制器中验证失败的相同模型)


禁止保存此用户:

您是在发布答案后重定向,还是只是呈现同一页面?如果要呈现相同的页面,则无论在视图中使用何种方法来显示错误,都应该显示错误。共享您的视图代码?当我使用render时,它会为我提供给定问题的答案url。flash消息的样式为绿色。为了保持一致性,我希望以与其他模型相同的方式显示所有错误。我已经试过了,不过还是要谢谢你:)款式由你决定。您可以使用与表单相同的错误显示。看看它是如何在脚手架上设置的。嗨,马里奥,如果我改变这个,那么我在其他模型上的所有其他flash消息都将显示为验证错误,我不希望这样。谢谢:)嗨,吉米!我得到nil:NilClass的未定义方法'errors',因为@answer是nil。我没有包含任何显示错误的内容,因为它包含在我的布局中。如果我只是添加表单,那么表单所做的事情与它让我感谢的事情完全相同。您需要将
@answer=answer.new
添加到显示问题的控制器方法中,另请参见更新以了解错误显示修复我已添加@answer=answer.new abut当我尝试添加新答案时,它将使我达到0.0.0.0:3000/问题/问题名称/答案:(该url有什么问题?您是否设置了将答案资源嵌套在问题下的路由?我指出的是我更改的第二行。您可以轻松地从AnsersController上的
index
重定向到QuestionsController上的
show
方法。)
    <%= 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
<%= 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 %>