我有以下模型嵌套属性形成错误消息定制
class OrgPerson < ActiveRecord::Base
has_and_belongs_to_many :TypRole
has_and_belongs_to_many :OrgContact
has_one :OrgCredential, dependent: :destroy
belongs_to :OrgCompany, foreign_key:"org_company_id"
belongs_to :TypPosition, foreign_key:"typ_position_id"
validates :first_name, presence: true
validates :last_name, presence: true
accepts_nested_attributes_for :OrgCredential
end
class OrgCredential < ActiveRecord::Base
belongs_to :OrgPerson, foreign_key:"org_person_id"
validates :user_name, presence: true
validates :password, length: { minimum: 6 }
before_create :create_remember_token
has_secure_password
end
和下面的强参数:
def person_params
params.require(:org_person).permit(:first_name, :last_name,
org_credential_attributes: [:password, :password_confirmation])
end
和以下new.html.erb
<%= form_for(@person) do |f| %>
<%= render 'shared/error_messages' %>
<div class="col-md-12 ">
<%= f.text_field :first_name, placeholder: "First Name", :class => "form-control" %>
<%= f.text_field :last_name, placeholder: "Last Name", :class => "form-control" %>
<%= f.fields_for :org_credentials do |oc|%>
<%= oc.password_field :password, placeholder: "Password", :class => "form-control" %>
<%= oc.password_field :password_confirmation, placeholder: "Password Confirmation", :class => "form-control" %>
<% end %>
<%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
</div>
In shared/error_messages
<% if @person.errors.any? %>
<div id="error_explanation" class="col-md-12">
<div class="alert alert-danger" role="alert">
The form contains <%= pluralize(@person.errors.count, "error") %>.
</div>
<ul>
<% @person.errors.full_messages.each do |msg| %>
<li>* <%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
如图片显示的问题是,它类似于“组织证书密码太短”的时候,我只希望它说:“密码是太短了。”我对Rails很陌生,我觉得我不得不通过错误散列遍历“Password is too short”,但我不太确定这是否是唯一的方法,或者是否存在更简单的方法我希望有人遇到同样的问题,可以启发我解决问题的方法。
谢谢!
您可能想看看Rails i18n(这是Rails指南的一部分) –