(例は私のユースケースの簡素化であることに注意してください。)どのように私のモデルの属性が含まれているデフォルトのリソースフルルートを持つことができますか?
私はモデルイベントと一つのイベントを示すためのデフォルトルートがあります。今
/events/:id(.:format) ----> activities#show
、イベントにはyearという名前の属性がありますが、も既にです。
/events/:year/:id(.:format) ----> activities#show
2番目の亜種がデフォルトであるため、私はredirect_to @event
のようなコードを使用して、そのバリエーション(例: http://localhost:3000/events/2012/1)。
どこで定義しますか?
def to_param
"#{self.year}/#{self.id}"
end
...しかし、それはparams[:id]
は、文字列1分の2012でいっぱいになります:
はこれまでのところ、私はそうのようなモデルでto_param
を上書きしようとしました。
私はparams[:year]
がする必要がありながらparams[:id]
はまだになりたいです。
これを達成するための標準的な方法は、Railsですか?
...または私はモデルのカスタムメソッドを記述し、このようなものを発行して、それを呼び出す必要があります:redirect_to @event.custom_method_to_create_long_url_variant
このような方法は、迅速に実装されますが、Railsは経由要件を扱うことができる場合簡単な設定であれば、他のすべてのコードを変更せずに済ませることができます。
EDIT:(:idと:年)
私は私のparams
は値を保有することを見出しを変更すると、期待どおりget :show, id: @event
FROM get :show, id: @event.id
TO機能テストでを取得します。
今の質問は次のとおりです。
は、それはそれを行うためだけの方法ですか私はまだget :show, id: @event
をサポートすることができますか?このような