安装Friendly_ID后我从rails收到错误,因为代码错误解释了输入,我不知道如何解决问题。为了使MVC框架能够理解url并相应地路由它,url需要符合以下模式:
localhost:3000/posts/[:id]
在上面,[id]
表示Post模型类中找到的任何对象的主键。当Friendly_ID更改网址以符合以下模式时,误解就会生效:
localhost:3000/posts/[:slug]
更新后的网址显然更容易被用户阅读,但由于我的应用程序希望获得[:id]
,因此会针对网址“localhost:3000 / posts / testing”引发以下异常:
我曾假设Friendly_ID gem要么在内部处理路由问题,要么执行某种[:id]
查找,要么通过某种url-masking来实现它的魔力。由于在这种情况下上述都不是真的,如何解决问题,允许pretty-urls提供与原始url模式相同的结果?
答案 0 :(得分:1)
自gem version 5.0
以来,Finder覆盖被禁用使用Post.friendly.find(params[:id])
或降级,或使用查找器插件,请参阅project github page
答案 1 :(得分:0)
将config.use :finders
添加到您的config/initializers/friendly_id.rb
这就是我的样子:
FriendlyId.defaults do |config|
config.use :reserved
config.reserved_words = %w(new edit index session login logout users admin
stylesheets assets javascripts images)
config.use :finders
end