2011-01-26 17 views
1

私はRuby on Railsには新しく、学ぶためにいくつかのオープンソースコードで遊んでいます。model_path()メソッドはどのように動作するのですか?

model_path(@model)メソッドが返す内容とその変更方法を理解する上で、いくつかの問題があります。具体的には、私はidslugのモデルを持っていて、なんらかの理由でmodel_path(@model)idではなく、slugのパスを常に返します。

これがなぜ発生するのか、この動作をどのように変更することができるかに関するアイデアはありますか?

答えて

0
model_path(@model) 

は、それが何であれ@model.to_param戻り

+0

おかげで:idを代用します

/model/:id 

このURLが生成されます!コードは今より意味をなさない。 http://domain.com/:id/:slug – slugger

+0

カスタムルートを追加する簡単な方法はありますか? '/:id /:slug'、:to => "your_controller#show"、:as =>:custom_modelに一致します。次に、ビューcustom_model_path(@ model.id、@ model.slug)でこれを使用できます。しかし、私はこれは良い解決策を見つけることはできませんが、より良いto_paramメソッドは、IDとスラッグを返すようにURLは "/モデル/ 12-blabla"このようになります – egze

+0

私は12 blablahも好きですが、コントローラーがparams [:id]を使用しているユーザーにとってより難しいですか?モデルインスタンスを見つけるためには、スラッグかIDのどちらかを解析する必要がありますか? – slugger

関連する問題