如何在 rails 路线中正确使用你的友好 / 鼻涕虫?

how to use ur friendly / slug properly in rails routes?

我有一个 table 是我用脚手架生成的, 像这样

rails generate scaffold Book title:string year:integer etc...

只有管理员可以使用 url 访问 table 以上内容,例如:

admin/books/book-1
admin/books/book-2

我使用 friendlyid gem 生成 slug 值,我对此没有问题。

但现在我需要访问 public 中的一个页面并根据 slug 字符串查询图书数据,我真的不知道如何让路由接受这样的 url :

public/book-1

目前我用查询字符串来做:public?book_id=123 并获得这样的参数:Book.where(:id=>params[book_id]) 我需要用 slug 方式改变它吗?

我试图将它添加到我的路由文件中,但仍然没有成功

# get 'public/:slug', to: 'public#detailed_book', as: 'slugged_post'

请指教,请告诉我如何正确设置我的路由文件以及如何在控制器中获取参数。

您可以使用

获取记录
Book.friendly.find(params[:id])

希望对您有所帮助!