2011-06-17 10 views
0

to_params I現在、私のモデルRailsの変更は、URL

def to_param 
    normalized_name = title.gsub(' ', '-').gsub(/[^a-zA-Z0-9\_\-\.]/, '') 
    "#{self.id}-#{normalized_name}" 
    end 

にこのオーバーライド私のto_params方法を持っているし、URLがこの/posts/1-Hello-World-very-nice はそれが可能それがこの/posts/1/Hello-World-very-nice

+0

これはルート(to_paramではなく)を通じて行うことができますが、私は "なぜ?"と思っています。これは、規則の命名規則に反します。この新しいURLで何を達成しようとしていますか? – natedavisolds

+0

私はうんざりしましたあなたがレールルートからこれを行うことができるかどうかはわかりませんでした。 – Kevin

+0

私はあなたがこの仕事をしてうれしいです。私はまだ疑問に思っています...なぜあなたはこれをしたいですか?私はこれ以上/投稿/ 1-Hello-World-very-niceの利点を見ていない – natedavisolds

答えて

2

次のように表示されるようにすることですように示してい例えば、このために別々のルートを追加することができます:あなたのルートファイルで

を(Railsのを想定した3):

あなたの他のポストルートように、あなたのルートファイルでこれを置く順序は、重要であること

show_post_path(@post, :name => @post.normalized_name) 

注:

は、その後、あなたのビューでは、正しいURLを生成するには、次を使用する必要があります上書きされません。

+0

私はこれを試していますが、 '未定義のメソッド' normalized_name 'for# 'これを解決する方法はどこに追加しますか? – Kevin

+0

'def normalized_name self.title.gsub( ''、 ' - ').gsub(/ [^ a-zA-Z0-9 \ _ \ - \。] /、 '') end'モデル – Kevin