在我的路线文件,我可以很容易地放在一起比赛,看起来像这样和工作得很好
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给页面显示控制器。 有没有使用的一些方法:蛞蝓匹配到与本塞寻找数据库中的网页:身份证,所以我可以通过:ID控制器?
在你的路由使用
match "/:slug" => "pages#show"
而在你的控制器使用此一决高下找到页面
@page = Page.find_by_slug(params[:slug])
看看https://github.com/norman/friendly_id宝石,它简化了蛞蝓路由很多。
你也可以这样做:
resources :pages, only: :show, param: :slug
这将产生
页面GET /pages/:slug/(.:format)页#秀
我为了能够使用这个助手是这样的: page_path(page)
,在页面的一个实例Page
,您还需要重写to_param
方法如下所示:
def to_param
slug
end