我有一个问题模型,允许用户添加问题。
我已经设置了Friendly_id,因此当用户添加问题时,网址为:
http://localhost:3000/questions/this-is-a-question
但是,我希望网址看起来像这样
http://localhost:3000/this-is-a-question
您对如何使用friendly_id有任何想法吗?
由于
更新:
这是我所讨论的friendly_id位.rb
extend FriendlyId
friendly_id :title, use: [:slugged, :finders]
def slug_candidates
[
:title,
[:title, :id]
]
end
def should_generate_new_friendly_id?
new_record?
end
端
答案 0 :(得分:5)
在routes.rb
中resources :questions, path: ''
注销时会抛出错误。
尝试:
get '/:friendly_id', to: 'questions#show'
答案 1 :(得分:2)
在routes.rb
中试试resources :questions, path: ''
答案 2 :(得分:1)
在routes.rb
中resources :questions, except: :show # Remove others you don't want
get ':id', to: 'questions#show', as: 'question'
如果您使用的是根级别ID,请确保使用friendly_id的保留字。此外,请确保将get ':id', to: 'questions#show', as: 'question'
行保留在routes.rb的底部,以便其他所有内容都优先于其上方。这是一条危险的路线。
答案 3 :(得分:0)
您在routes.rb
中想要的内容类似于以下内容:
get '/:id', to: 'posts#show', constraints: { id: /\d.+/ }
get '/:username', to: 'users#show'
从路由文档http://guides.rubyonrails.org/routing.html
中复制如果问题名称被称为friendly_id
,那么你想要的是:
get '/:friendly_id', to: 'questions#show'
并在controller show method
中使用param[:friendly_id]