sid*_*eks 9 ruby routes ruby-on-rails ruby-on-rails-3
所以我正在寻找一个可以帮助我实现以下Rails资源的解决方案:
/admin/articles/:slug/edit
Run Code Online (Sandbox Code Playgroud)
而不是
/admin/articles/:id/edit
Run Code Online (Sandbox Code Playgroud)
我正在寻找Rails 资源路由而不是其他类型的路由.
只是想知道是否有可能.如果是这样,怎么样?
Tho*_*emm 23
# config/routes.rb
resources :articles, param: :slug
Run Code Online (Sandbox Code Playgroud)
在终端:
$ rake routes
...
article GET /articles/:slug(.:format) articles#show
...
Run Code Online (Sandbox Code Playgroud)
Sim*_*tti 10
:id路由中的参数只是一个占位符,可以是任何东西,从数字标识符到slug.
你只需要传递正确的值
article_path(id: @article.slug)
Run Code Online (Sandbox Code Playgroud)
并使用适当的方法获取文章
Article.find_by!(slug: params[:id])
Run Code Online (Sandbox Code Playgroud)
如果你愿意,你也可以覆盖to_param为Article模型返回蛞蝓,这样就可以使用
article_path(@article)
Run Code Online (Sandbox Code Playgroud)
并自动将slug分配给:id参数.