我有一個static_controller是負責在站點中的所有靜態頁面和作品中的routes.rb如下:在Rails中路由靜態控制器的最佳方式是什麼?
map.connect ':id', :controller => 'static', :action => 'show'
我有打電話詢問除其他信息靜態頁面,有一個接觸的形式。 我目前有一個contacts_controller,負責將聯繫信息插入數據庫。 裏面我的routes.rb文件,我有:
map.resources :contacts
我的聯繫表格(簡體)看起來是這樣的:
<% form_for @contact do |f| %>
<p class="errors"><%= f.error_messages %></p>
<p>
<%= f.label :first_name %>
<%= f.text_field :first_name %>
</p>
<p class="buttons"><%= f.submit %></p>
<% end %>
這反過來又提交給我contacts_controller的創建操作。 我創建操作是這樣的:
def create
@contact = Contact.new(params[:contact])
if @contact.save
flash[:notice] = "Email delivered successfully."
end
redirect_to "about"
end
的問題是,是的,當我重定向到我關於網頁表單的error_messages就丟失了(因爲表單的error_messages只存在一個請求,並且該請求在重定向時結束)。 我會如何去保存error_messages,並將用戶連接回靜態url? 會話/閃存是否足夠(如果是這樣,我將使用什麼代碼來傳遞錯誤消息),還是我對整個事情做錯了?
謝謝!
但後來我仍然在'/ contacts'而不是'/ about' - 正是我想避免的。這也不是很RESTful。有什麼建議麼? – 2010-04-04 01:13:39
是的,你會留在/聯繫人,這是一個POST。這是確保您的錯誤得到顯示的標準方法。 – 2010-04-04 01:34:02
如果聯繫人保存,您可以執行「redirect_to:action =>'about'」。如果保存失敗,則使用渲染。請記住,如果您要求新的連接(使用重定向),@errors將不存在。 我不是一位REST專家,但該代碼在大多數Rails應用程序中都非常標準。我的(可能有缺陷的)理解是,REST中的重要部分是您正在處理HTTP方法中的信息,而不是URL中的信息。什麼特別似乎不可靠? – mikewilliamson 2010-04-04 01:57:55