2011-07-01 5 views
0

ページリソースがあり、特定のインスタンスにid = 5とpermalink = foobarがあるとします。生成された安らかなURLヘルパーをRailsに上書きする

resources :pagesとすれば、URL「/ pages/5」を出力する<%= link_to @page.title, @page %>を使用できます。

どうすれば "/ pages/foobar"を出力するのですか?編集URLと同様に... edit_page_path(@page)出力を "/ pages/foobar/edit"にするにはどうすればよいですか?

UPDATE

回答は、これまでに素晴らしいスタートですPage.rbでto_paramを上書きすると述べています。それぞれに+1。しかし、<%=link_to @page.title, @page%>に "/ pages /:permalink"ではなく "/:permalink"を出力したい場合はどうすればよいですか?私はその答えを受け入れるだろう。

答えて

1

パーマリンクを使用します。

は、モデルにこれを追加します。

class Post 

    def to_param 
     "#{id}-{title}" 
    end 

end 

これは、あなたがタイトルを持っていることを前提としています。

あなたがこれを取得したら、あなたがpermalink-fuを見上げる見てみたい、またはそれは後に保存して、あなた自身を行うには、実際には本当に簡単です:確認してください

クラスのポスト

before_save :manage_peramlink 

def manage_peramlink 
    permalink = "#{name.gsub(/\s/, '_').gsub(/[^\w-]/, '').downcase}" 
end 

def to_param 
    "permalink" 
end 

エンド

モデルにフィールドとしてperamlinkを追加します。

3

モデル内のto_paramメソッドをオーバーライドすると、ルーティング用にプライマリキーではなくRailsに何を使用するかを指示できます。

例えば

class Page 
    def to_param 
    "#{self.id}-#{self.title.parameterize}" 
    end 
end 

パラメータ化コールがあなたのタイトルURLがフレンドリーになり、あなたもself.idの使用を気づくかもしれません、これはあなたが重複したタイトルを持っている場合に推奨されます。

+0

Ahh cool。しかし... "/ pages /:permalink"ではなく "/:permalink"になるようにページに移動したいのですが? – tybro0103

+0

'config/routes.rb'ファイルでカスタムルートを作る必要があります。例えば、「match /:permalink」=> pages#show'のようなものです。 – basicxman

+0

はい、ヘルパーはどのようにしてURLを生成しますか? – tybro0103

関連する問題