Pri*_*Dey 4 ruby ruby-on-rails ruby-on-rails-4 ruby-on-rails-4.1 ruby-on-rails-4.2
我使用的是rails 4和ruby 2.我在rails应用程序中创建了一个博客部分.我需要更改显示页面中的网址.我的问题是,我希望我的网址中的标题而不是ID.我想http://www.domain.com/articles/blog_title而不是http://www.domain.com/articles/9.我怎样才能做到这一点?如果有人对此有任何想法,请与我分享.
我的代码:
ArticlesController:
def index
@articles = Article.all
@articles = Article.paginate(:page => params[:page], :per_page => 5).order('created_at DESC')
end
def show
@article = Article.find(params[:id])
end
private
def article_params
params.require(:article).permit(:title, :body)
end
Run Code Online (Sandbox Code Playgroud)
routes.rv
resources :articles
Run Code Online (Sandbox Code Playgroud)
有这个目的的真棒宝石命名friendly_id,https://github.com/norman/friendly_id
在你的文章模型中,你只需要添加它,
extend FriendlyId
friendly_id :name, use: :slugged
Run Code Online (Sandbox Code Playgroud)
还有许多其他选项,您需要查看文档.
希望有所帮助!
实际上你可以覆盖to_param方法.你不需要有任何宝石.
如果你有slug列,那就放
def to_param
self.slug.parameterize
end
Run Code Online (Sandbox Code Playgroud)
如果你想去标题那么
def to_param
self.title.parameterize
end
Run Code Online (Sandbox Code Playgroud)
请记住将slug或标题列(无论您使用哪个)编入索引,以便更快地进行搜索.
| 归档时间: |
|
| 查看次数: |
2469 次 |
| 最近记录: |