Vit*_*aly 16 url ruby-on-rails slug
我正在尝试在Rails中实现这样的URL:
http://localhost/posts/1234/post-slug-name
Run Code Online (Sandbox Code Playgroud)
同时使用ID和slug名称而不是其中之一
http://localhost/posts/1234
Run Code Online (Sandbox Code Playgroud)
要么
http://localhost/posts/post-slug-name
Run Code Online (Sandbox Code Playgroud)
(现在我在URL中只有slug名称,所以这部分结束了).我怎样才能做到这一点?
UPD
我发现了一篇关于此的文章:http://augustl.com/blog/2009/styling_rails_urls/,而不是/id/slug建议使用/id-slug哪种方式对我来说非常有效,所以我会选择这个.
Tob*_*ede 30
Rails对SEO友好URL有一些内置支持.
您可以通过简单地覆盖模型中的to_param方法,在表单中创建一个URL:"id-title" .
这来自我的一个项目,并创建一个包含id,类别名称和模型名称的URL:
def to_param
"#{id}-#{category.name.parameterize}-#{name.parameterize}"
end
Run Code Online (Sandbox Code Playgroud)
当您访问控制器操作时,Rails非常智能,可以将其提取回普通ID,因此以下内容正常工作:
def show
@model = Model.find(params[:id])
render :action => "show"
end
Run Code Online (Sandbox Code Playgroud)
小智 9
除了资源路径之外,您还需要添加带路线全球的常规路线(当然,假设您的posts路线是如何定义的).例如,
map.resources :posts
map.connect '/posts/:id/*slugs', :controller => 'posts', :action => 'show'
Run Code Online (Sandbox Code Playgroud)
使用friendly_id.它有一个很好的功能:你可以更新你的网址而不会破坏旧网址.
生成视图网址对我不起作用.我刚刚在模型中添加了一个小方法
def to_param
self.friendly_id
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9625 次 |
| 最近记录: |