(注意例子是我用例的簡化)我如何使默認的足智多謀的路線包含我的模型的屬性?
我有一個模型事件和用於顯示一個事件的默認路由:現在,
/events/:id(.:format) ----> activities#show
事件具有名爲year的屬性,並且我也是已經接受以下路由:
/events/:year/:id(.:format) ----> activities#show
0123因爲第二個變體應該是默認的,所以我希望代碼如redirect_to @event
將用戶引導到該變體(例如, http://localhost:3000/events/2012/1)。
我在哪裏定義?
到目前爲止,我已經試過覆蓋to_param
模型像這樣:
def to_param
"#{self.year}/#{self.id}"
end
...但是,這會導致params[:id]
來填充字符串一分之二千〇一十二。
我想params[:id]
仍然是而params[:year]
應該。
Rails是否提供了一個標準的方法來實現這個目標?
...還是我將不得不寫的模型的自定義方法,並通過發出這樣的呼籲是:redirect_to @event.custom_method_to_create_long_url_variant
這種方法會很快實現,但如果Rails可以通過處理要求一個簡單的設置,它可以讓我幾乎不用任何其他代碼。
編輯:
我發現我params
保存的值更改得到在功能測試從get :show, id: @event
TO get :show, id: @event.id
當預期(:年:ID和)。
現在的問題是:
的是,短短的方式做到這一點還是我仍然可以支持get :show, id: @event
?