在我的Rails 3.0應用程序中,我的資源上有一系列非常大的搜索表單:索引頁,需要使用POST而不是GET。Rails 3:在索引頁面上使用POST表單?
目前,當我想讓它路由到資源#索引時,該應用將POST請求路由到資源#create。我意識到這是RESTful路線,但需要覆蓋它。我怎麼能做到這一點,同時還保留創建該資源的新記錄的能力?
非常感謝。
在我的Rails 3.0應用程序中,我的資源上有一系列非常大的搜索表單:索引頁,需要使用POST而不是GET。Rails 3:在索引頁面上使用POST表單?
目前,當我想讓它路由到資源#索引時,該應用將POST請求路由到資源#create。我意識到這是RESTful路線,但需要覆蓋它。我怎麼能做到這一點,同時還保留創建該資源的新記錄的能力?
非常感謝。
你最好有一個「搜索」的行動,只是後 - 再呈現指數模板如:
class MyController < ...
def search
@my_things = MyThing.find_with_search_params(params[:search])
render :action => :index
end
end
所以你希望你的「創建」動作在控制器中的終點做2件事 - 響應搜索和做的也是?糟糕的主意,但解決方案可能與在創建操作中使用「if」條件來執行其中一個操作一樣簡單。如果它不是一個滿意的答案,請隨時澄清你的問題多一點。
我看到這是一個壞主意,並希望避免它。我想我希望有一個路由解決方案,而不是兩者都使用創建控制器。也許只是將搜索的url從索引頁面移動到資源/搜索或資源/全部。 – Andrew 2011-05-16 13:44:39
如果你真的很寧靜,這將無縫工作。 /資源的URL與GET將命中索引操作,並執行一個搜索和/ POST的資源將擊中創建操作,並做好一個創建。您的視圖必須確保搜索鏈接/按鈕是GET方法,並且正在使用POST進行創建。這是路由解決方案。 /資源與GET =>索引和/資源與POST =>創建。 – 2011-05-16 14:13:59
您可以使用索引,只需在Rails的3條路線補充一點:
resources :my_things do
post :index
end
不使用POST作爲搜索表單與REST範例相矛盾嗎? GET不會更合適嗎? – Wukerplank 2011-05-16 07:06:34
GET絕對更合適,但對於所有搜索參數,url長度限制太小。 – Andrew 2011-05-16 13:41:31