2012-02-20 9 views
1

私のコントローラは、私が:guuidを使用するデフォルト:idを変更したい、作成追加などRESTルートとオーバーライド:to_paramとID

を編集するためのデフォルトのRESTfulなルートを使用しています。だから何私がしたした

# routes.rb 
resources :posts 

# Post Model 
class Post < ActiveRecord::Base 
    def to_param # overridden 
     guuid 
    end 
end 

これは動作しますが、私はこのコードこれを見たとき、私のmodifed RESTコントローラーのコードは、この

def show 
    @post = Post.find_by_guuid(params[:id]) 
    @title = "Review" 
    respond_to do |format| 
    format.html # show.html.erb 
    end 
end 

のようなものがあります。..

Post.find_by_guuid(params[:id]) 

それが思われます間違っているが動作する。 私はこのようにそれを書くことができない理由を私は理解していない:

Post.find_by_guuid(params[:guuid]) 

なぜ私はまだ私はそれを使用していないときparams[:id]に合格しなければなりませんか?
私のアプローチが正しいかどうか、あるいは何かを検討するかどうかについてのフィードバックを探しています。
動作しても、必ずしも正しいとは限りません。

答えて

2

rake routesを入力し、ルートの出力を確認してください。 params[:id]の部分は、 ':id'というフラグメントの一部が表示されます。レールのコンベンションです:ルートにresourcesを使用すると、パラメータの名前はidとなります。私はあなたがそれを変えることができるかどうかは分かりません(を維持していますが、それ以外の場合は一致するルールで行くことができます)。しかし、とにかくそうすべきではありません。ルーティングが機能します。

+0

これはレールのコンベンションであれば、それに固執します。私はちょうど彼らのルートでそれを上書きする別の方法かもしれないと思った。フィードバックをお寄せいただきありがとうございます。 – alenm

関連する問題