【发布时间】:2011-07-15 10:49:06
【问题描述】:
我正在创建一个简单的演示应用程序,它允许用户输入他们的电子邮件地址来注册他们对接收测试访问的兴趣。然后,该应用程序会向他们发送一封确认电子邮件,让他们知道我们已收到他们的请求。如果您曾经注册以收到有关测试版发布的通知,那么您就会明白。
我很好奇在使用 AJAX 时如何处理 Rails 3 中的错误。在实现我的 respond_to 块之前,我有一个表单会呈现部分共享错误。
这是表格。
<% if flash[:notice] %>
<p><%= flash[:notice] %></p>
<% end %>
<p>Sign up to be notified when the beta launches.</p>
<%= form_for @user, :remote => true do |form| %>
<%= render '/shared/errors', :target => @user %>
<%= form.label :email, "Your Email Address" %>
<%= form.text_field :email %>
<%= form.submit "Notify Me" %>
<% end %>
这是前面提到的部分错误。
<% if target.errors.any? %>
<ul>
<% target.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
非常标准的东西。控制器动作如下所示。
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to :back, flash[:notice] = "Thanks for your interest! We'll let you know when the app is in beta." }
format.js
else
format.html { render :action => :new }
format.js
end
end
end
在实现 ajax 之前,一切都运行良好。如果表单通过验证,那么他们会看到成功闪烁消息,如果没有,他们会看到错误列表。所以现在我有一个 create.js.erb 文件,我应该如何处理错误而不重复自己,或者那是不可能的。我显然希望尽可能保持干燥。
【问题讨论】:
标签: ruby-on-rails ajax