Итак, после двухдневного чтения этой темы я чувствую себя потерянным между проблемами в старых версиях рельсов и некоторыми отдельными вещами, которые я, вероятно, сделал неправильно.Вложенные формы, проверки и сообщения об ошибках
У меня есть форма, где Пользователь может создать учетную запись. Каждому пользователю нужно поставить свою цифровую табличку, и автомобиль создается, если он еще не существует с этой номерной табличкой и назначается пользователю. В моей форме отображаются сообщения об ошибках проверки для пользователя, но не для автомобиля (он только отмечает поля ввода для цифровых знаков красного цвета).
Итак, мои вопросы: Как получить правильное отображение сообщений об ошибках? Я также подозреваю, что после всех тем, которые я прочитал, мой пользовательский контроллер может делать некоторые вещи, которые я не должен делать вручную.
Моя форма:
<%= 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>
user.rb:
class User < ActiveRecord::Base
belongs_to :car, inverse_of: :users
validates :name, presence: true, length: { maximum: 50 }
car.rb:
class Car < ActiveRecord::Base
has_many :users, inverse_of: :car
accepts_nested_attributes_for :users
validates :plateprefix, presence: true
и, наконец, мой контроллер автомобиля:
def new
@user = User.new
end
def create
if verify_recaptcha
@user = User.new(user_params)
if Car.exists?(:country => 'D', :plateprefix => params[:user][:car][:plateprefix].upcase, :plate => params[:user][:car][:plate].upcase)
@car = Car.find_by(:country => 'D', :plateprefix => params[:user][:car][:plateprefix].upcase, :plate => params[:user][:car][:plate].upcase)
@user.car_id = @car.id
else
@car = Car.new(:country => 'D', :plateprefix => params[:user][:car][:plateprefix].upcase, :plate => params[:user][:car][:plate].upcase)
@car.country = 'D'
@car.save
@user.car_id = @car.id
end
if @user.save
@user.send_activation_email
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
@user = User.new
render 'new'
end
else
@user = User.new
render 'new'
end
end
В дополнение к моему вопросу: когда возникает ошибка, и поле числовых знаков становится красным, оно также разрушает мое форматирование. Обычно два поля находятся в строке с тире в середине (стандартное форматирование немецких числовых знаков), но с красной маркировкой он перемещает поля в две отдельные строки. Любой намек на это тоже поможет? – Peter