在Rails 3.0中,我有标准的“新”形式,可以创建一个新记录,在这种情况下是一个病人。它工作正常,验证/错误显示也可以正常工作。
客户现在想要西班牙语表格。
所以,我这样做了:
并且,它可以完美提交。
对于未通过验证的提交(例如将3位数作为电话号码),该页面将恢复为“病人/新”视图并显示表格上方的错误...当然,因为患者/ new是英文的。
当然,我希望它恢复为“views / newspanish”,并在验证错误(西班牙语)中显示自定义verbage。
关于如何在错误验证绊倒时加载患者/新闻视图的任何想法?
这是“_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
答案 0 :(得分:1)
<%= form_for(@patient) do |f| %>
正在创建一个其提交的URL的表单是“/ patients”,它与patients_controller匹配,创建动作。
该创建动作可能有一行(在我的伪代码中)
if @patient.save
redirect to somewhere
else
render :new
end
该行“render:new”显示“患者/新”视图。
所以你需要弄清楚的是 1)在patients_controller中检测#create如何判断其是否为西班牙语,并呈现“newspanish”
OR
2)更改<%= form_for(@patient) do |f| %>
以提交一个刚刚处理西班牙语版本的新网址,并创建一个新的控制器或操作,只处理西班牙语形式(如果@patient没有,则呈现“newspanish”保存
对于#2,您可以手动更改表单提交的位置
<%= form_for(@patient), :url => spanish_patients_path do |f| %>
并在您的路线中创建
post "patients/spanish" => "patients#create_in_spanish"
并将def create_in_spanish
添加到患者控制器