我正在創建一個簡單的演示應用程序,允許用戶輸入他們的電子郵件地址以註冊他們對接收測試版訪問的興趣。該應用程序然後向他們發送確認電子郵件,讓他們知道我們已收到他們的請求。如果你曾經註冊過測試版發佈的通知,那麼你就明白了。在Rails 3中使用Ajax進行錯誤處理
我很好奇如何在使用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之前,一切都很完美。如果表單通過驗證,那麼他們會看到成功的Flash消息,如果沒有,那麼他們會看到一個錯誤列表。所以,現在我有一個create.js.erb文件,我應該如何處理這些錯誤,而不必重複自己,或者這是不可能的。我顯然希望儘可能保持乾燥。
這個答案對您有幫助嗎? – Techism 2011-03-15 21:32:27