4

私のルートファイルでは、このような一致を簡単にまとめることができ、うまく機能します

match '/:slug/:id' => "pages#show", :id => :id

これが機能するビューのリンクは

link_to n.name, "/" + n.slug + "/" + n.id.to_s

URLにID番号を含めたくないので、次のようなことをしたいと思っていました

match '/:slug' => "pages#show", :slug => :slug

しかし問題は、これがページのショーコントローラーにIDを提供しないことです。:slug を使用して、このスラッグを使用してデータベース内のページと一致させ、:id を見つけて、:id をコントローラーに渡す方法はありますか?

4

3 に答える 3

6

あなたのルートではこれを使用します

match "/:slug" => "pages#show"

そして、コントローラーで、これを使用してスラッグでページを見つけます

@page = Page.find_by_slug(params[:slug])
于 2012-12-17T11:07:02.690 に答える
1

https://github.com/norman/friendly_id gemをご覧ください。これにより、スラッグを使用したルーティングが大幅に簡素化されます。

于 2012-07-06T04:13:25.833 に答える