Ruby on Rails 4.1
表单在模型中检查了验证。我有自定义消息,显示消息之前的属性名称。
我正在尝试在en.yml文件中指定属性的转换,或者只是删除属性名称。我没有收到错误,但只是在没有自定义消息的情况下人性化了这些属性。
示例,我收到的一封邮件是* Cc name your name on the credit card cannot be blank
,我希望它说Your name on the credit card cannot be blank
或Credit card name cannot be blank
。
型号:
class Payment < ActiveRecord::Base
validates_presence_of :telephone, :email, :address1, :city, :state, :postal_code, :country, :cc_type, :cc_number, :ccv, :expires_on, :ship_name, :ship_address1, :ship_city, :ship_state, :ship_postal_code, :ship_country
validates_presence_of :cc_name,
:message => ' Your name on the credit card cannot be blank'
validates_presence_of :name_auth,
:message => ' Your name authorizing the purchase cannot be blank'
错误消息文件:
<% if @payment.errors.any? %>
<div id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize(@payment.errors.count, "error") %>
</div>
<ul>
<% @payment.errors.full_messages.each do |msg| %>
<li>* <%= msg.humanize %></li>
<% end %>
</ul>
</div>
<% end %>
en.yml文件:
en:
activerecord:
attributes:
cc_name: "Credit card name"
name_auth: "Authorizing name"
date_auth: "Authorized date"
card_holder_auth: "Authorized card holder"
charge_auth: "Authorizing payment"
cc_number: "Credit card number"
ccv: "Card code verification (CCV)"
答案 0 :(得分:1)
所以经过太多时间我发现最好的答案应该是设置错误的格式。谁想要错误中的属性名称?我可以轻松地添加它,并且实际上将其属性命名为最终用途的内容?无论如何,这会重新格式化错误消息:
en:
errors:
format: "%{message}"
默认为&#34;%{attribute}%{message}&#34;,IMO通常不需要,应该更改。
答案 1 :(得分:0)
最好将错误消息放入en.yml中,如下所示:
en:
activerecord:
errors:
models:
payment:
attributes:
cc_name:
blank: "Credit card name cannot be blank"
然后您可以删除模型中的自定义消息。