【发布时间】:2011-12-23 12:39:27
【问题描述】:
在 Rails 3.0 中,我有创建新记录的标准“新”表单,在本例中为患者。它工作正常,验证/错误显示也工作正常。
客户现在需要西班牙语的表单。
所以,我这样做了:
- 创建了一个名为“newspanish”的新 html 文档(从“患者/新”中剪切/粘贴代码)
- 创建了一个名为“_form_newspanish”的新部分,并在“form”部分位于“newspanish”中的位置引用它(从“患者/_form”视图剪切/粘贴代码)
- 在“患者”中创建了一个名为“newspanish”的控制器操作,并从“新”操作中剪切/粘贴了准确的代码。
- 我没有修改“创建”操作。
- 为路线添加了匹配“患者/新闻西班牙语”。
- 将views/newspanish 和views/_form_newspanish 中的英文部分翻译成西班牙语。只是用户在页面上阅读的内容,当然……不是 rails 代码。
而且,它适用于完美的提交。
对于未通过验证的提交(例如将 3 位数字作为电话号码),页面将返回到“患者/新”视图并在表单上方显示错误...当然是英文,因为患者/ new 是英文的。
当然,我希望它恢复为“views/newspanish”,并在验证错误中显示自定义措辞(西班牙语)。
关于如何在错误验证失败时加载患者/新闻西班牙语视图有什么想法吗?
这是我的“_form_newspanish”代码
<%= form_for(@patient) do |f| %>
<% if @patient.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@patient.errors.count, "error") %> prohibited this subscriber from being saved:</h2>
<ul>
<% @patient.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p><label for="mobile">Número de teléfono celular o móvil*</label>: <%= f.text_field :mobile %></p>
<br />
<%= f.submit "Inscribirme" %>
</div>
<% end %>
和控制器...患者/新闻西班牙语
def newspanish
@patient = Patient.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @patient }
end
end
【问题讨论】:
-
你为什么不只使用I18n???并提供西班牙语 yml 语言环境文件?见这里:guides.rubyonrails.org/i18n.html
标签: ruby-on-rails-3 internationalization