出于某种原因,我可以成功自定义ActiveRecord中的特定错误消息,但我似乎无法更改错误消息标题。
en:
activerecord:
errors:
template:
header:
one: "Custom message goes here. 1 error prohibited this %{model} from being saved"
other: "Customer message goes here. %{count} errors prohibited this %{model} from being saved"
messages:
blank: "custom :blank message goes here"
models:
complaint: "Complaint"
attributes:
complaint:
city: "Custom city name"
neighborhood: "Custom neighborhood name"
如果我将城市和街区留空,我会收到以下错误消息:
2个错误禁止此投诉被保存:
自定义城市名称自定义:空白消息在此处
自定义社区名称自定义:空白邮件在此处
由于某种原因,实际的错误消息已更改,但错误标头未更改。在调试中,我将YML文件更改为以下内容,但未更改默认消息:
en:
activerecord:
errors:
template:
header:
one: "blah"
other: "blah blah"
body: "blah blah blah"
有谁知道为什么这个简单的改变不起作用?我唯一能想到的是“标题”需要与模型有关。不确定。
我使用过的参考资料:
[http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models][1] [http://guides.rubyonrails.org/v2.3.8/i18n.html#translations-for-active-record-models][1]
答案 0 :(得分:1)
您的示例中似乎有错误的间距。请检查是否总有两个空格作为缩进。
如果这不能解决问题,请检查您正在使用的Rails版本:
Rails 2.3示例
pt:
activerecord:
errors:
template:
header:
one: "não foi possível guardar este %{model} porque encontramos um erro"
other: "não foi possível guardar este %{model} porque encontramos%{count} erros"
# The variable :count is also available
body: "Encontramos problemas nos seguintes campos:"
# The values :model: "attribute and :value are always available for interpolation
# The value :count is available when applicable. Can be used for pluralization.
messages:
inclusion: "não esta incluído na lista"
exclusion: "está reservado"
invalid: "não é válido"
Rails 3示例
es:
errors: &errors
format: ! '%{attribute} %{message}'
messages:
...
taken: ya está en uso
too_long: es demasiado largo (%{count} caracteres máximo)
too_short: es demasiado corto (%{count} caracteres mínimo)
wrong_length: no tiene la longitud correcta (%{count} caracteres exactos)
template:
body: ! 'Se encontraron problemas con los siguientes campos:'
header:
one: No se pudo guardar este/a %{model} porque se encontró 1 error
other: No se pudo guardar este/a %{model} porque se encontraron %{count} errores
activemodel:
errors:
<<: *errors
activerecord:
errors:
<<: *errors
答案 1 :(得分:1)
问题是错误消息头实际上是从Rails 3.0开始硬编码的。从我找到的资源:
查看scaffold生成的app / views / users / _form.html.erb。该 错误消息是硬编码的。因此,更改语言环境文件没有 效果。
实际上,Rails 3.0没有使用 activerecord.errors.template.header翻译。在Rails 2.x中, 此转换用于表单的error_messages方法 构建器,但不推荐使用此方法并将其解压缩为插件。
如果您感到好奇,请执行以下操作:
-rails plugin install git://github.com/joelmoss/dynamic_form.git
-Edit app / views / _form.html.erb如下:
<%= form_for(@user) do |f| %>
<%= f.error_messages %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>