Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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 嵌套表单、验证和错误消息_Ruby On Rails_Validation_Ruby On Rails 4_Error Handling_Nested Forms - Fatal编程技术网

Ruby on rails 嵌套表单、验证和错误消息

Ruby on rails 嵌套表单、验证和错误消息,ruby-on-rails,validation,ruby-on-rails-4,error-handling,nested-forms,Ruby On Rails,Validation,Ruby On Rails 4,Error Handling,Nested Forms,因此,在阅读了两天关于这个主题的文章之后,我感到迷失在旧版本rails的问题和一些我可能做错的事情之间 我有一个用户可以创建帐户的表单。每个用户都需要输入自己的车牌号,如果车牌号不存在,则会创建一辆车并分配给用户。 我的表单显示用户的验证错误消息,但不显示汽车的验证错误消息(它只将车牌的输入字段标记为红色) 所以我的问题是:如何正确显示错误消息? 在阅读了所有的主题之后,我还怀疑我的用户控制器可能正在做一些我不应该手动做的事情 我的表格: <%= form_for(@user, html

因此,在阅读了两天关于这个主题的文章之后,我感到迷失在旧版本rails的问题和一些我可能做错的事情之间

我有一个用户可以创建帐户的表单。每个用户都需要输入自己的车牌号,如果车牌号不存在,则会创建一辆车并分配给用户。 我的表单显示用户的验证错误消息,但不显示汽车的验证错误消息(它只将车牌的输入字段标记为红色)

所以我的问题是:如何正确显示错误消息? 在阅读了所有的主题之后,我还怀疑我的用户控制器可能正在做一些我不应该手动做的事情

我的表格:

 <%= form_for(@user, html: { multipart: true }) do |f| %>
 <%= render 'shared/error_messages', object: f.object %>
 <div class="row">
  <div class="col-xs-6 col-xs-offset-3">
      <%= render 'shared/error_messages', object: f.object %>
      <%= f.label :name %>
      <%= f.text_field :name, class: 'form-control' %>

      <%= f.label :email %>
      <%= f.email_field :email, class: 'form-control' %>

      <%= f.label :password %>
      <%= f.password_field :password, class: 'form-control' %>

      <%= f.label :password_confirmation, "Bestätigung" %>
      <%= f.password_field :password_confirmation, class: 'form-control' %>
  </div>
</div>
<div class="row">
  <div class="col-xs-6 col-xs-offset-3">
      <%= f.fields_for :car, @car do |car| %>
      <%= car.label :plateprefix, "Nummernschild" %>
    <div class="form-inline">
       <%= car.text_field :plateprefix %> 
       <%= car.label :plate,  "-" %>
       <%= car.text_field :plate %>
     </div>
    <% end %>
  </div>      
</div>

好的,在读了两天之后,我解决了这个问题:

首先,我将accepts_嵌套的_属性从car.rb移到user.rb(并从复数变为单数)

user.rb

 accepts_nested_attributes for :car
但由于某种原因,在我的表格中,我不得不将字段_中的变量改为复数(:cars-rails的一些魔力超出了我的能力,但我想我正在实现)

接下来,我还使用ActiveModel/Record提供的方法重新创建了控制器,并执行了以下操作:

if Car.exists?(:country => 'D', :plateprefix => params[:user][:cars][:plateprefix].upcase, :plate => params[:user][:cars][:plate].upcase)
 @user.car = Car.find_by(:country => 'D', :plateprefix => params[:user][:cars][:plateprefix].upcase, :plate => params[:user][:cars][:plate].upcase)
else
 @user.create_car(:country => 'D', :plateprefix => params[:user][:cars][:plateprefix].upcase, :plate => params[:user][:cars][:plate].upcase)
end

因此,这清理了我的代码一点,我终于得到了我的错误正确显示

好的,在阅读了两天之后,我解决了这个问题:

首先,我将accepts_嵌套的_属性从car.rb移到user.rb(并从复数变为单数)

user.rb

 accepts_nested_attributes for :car
但由于某种原因,在我的表格中,我不得不将字段_中的变量改为复数(:cars-rails的一些魔力超出了我的能力,但我想我正在实现)

接下来,我还使用ActiveModel/Record提供的方法重新创建了控制器,并执行了以下操作:

if Car.exists?(:country => 'D', :plateprefix => params[:user][:cars][:plateprefix].upcase, :plate => params[:user][:cars][:plate].upcase)
 @user.car = Car.find_by(:country => 'D', :plateprefix => params[:user][:cars][:plateprefix].upcase, :plate => params[:user][:cars][:plate].upcase)
else
 @user.create_car(:country => 'D', :plateprefix => params[:user][:cars][:plateprefix].upcase, :plate => params[:user][:cars][:plate].upcase)
end

因此,这清理了我的代码一点,我终于得到了我的错误正确显示

除了我的问题:当错误发生并且号码牌字段被标记为红色时,它还会破坏我的格式。通常这两个字段在中间有一个破折号(德国数字板标准格式),但是用红色标记将字段移动成两个独立的行。关于这一点的任何提示也会有帮助吗?除了我的问题:当错误发生并且号码牌字段被标记为红色时,它还会破坏我的格式。通常这两个字段在中间有一个破折号(德国数字板标准格式),但是用红色标记将字段移动成两个独立的行。关于这一点的任何提示也会有帮助吗?
if Car.exists?(:country => 'D', :plateprefix => params[:user][:cars][:plateprefix].upcase, :plate => params[:user][:cars][:plate].upcase)
 @user.car = Car.find_by(:country => 'D', :plateprefix => params[:user][:cars][:plateprefix].upcase, :plate => params[:user][:cars][:plate].upcase)
else
 @user.create_car(:country => 'D', :plateprefix => params[:user][:cars][:plateprefix].upcase, :plate => params[:user][:cars][:plate].upcase)
end