我通常只使用flash [:notice]來獲取諸如「您的帳戶已成功更新」等通知消息,並且對於錯誤消息可能是flash [:error]或error_msg_for
。對於所有其他類型的錯誤消息,我使用error_msg_for驗證失敗導致的錯誤和flash [:錯誤]。除非絕對必要,否則我會小心不要將它們設置爲同一行動。
我也嘗試避免將使用返回給他們剛剛提交的表單,如果他們的行動成功。我認爲它發出矛盾的信號來發布成功信息並將用戶發回他們剛剛提交的表單。我的經驗法則是「重定向成功,失敗時呈現」。例如,如果將@user保存在更新上,我將redirect to @user
,但如果保存不成功,則會渲染:編輯。
樣本控制器代碼。
before_filter :identify_user, :except => :index
def update
@user = User.find(params[:id])
if @user.update_attributes(params)
flash[:notice] = "Your account was updated successfully"
redirect_to @user
else
render :action => :edit
end
end
def index
end
def identify_user
begin
@user = User.find(params[:id])
rescue
flash[:error] = "You specified an unknown user"
redirect users_path
end
end
我的通知在我的應用程序佈局中被部分調用。
<div id="notification_area">
<% flash.each do |key, value| %>
<% if value %>
<div id="<%=key%>">
<%= value %>
</div>
<%end%>
<%end%>
</div>
這與Rails的所有腳手架一致。 – 2009-10-21 19:18:48
可能在哪裏我拿起練習。 – EmFi 2009-10-21 19:29:00