我已经在我的 Rails 4 应用程序中成功地使用了friendly_id 和多个模型。我以前有两个模型,我决定合并(终端和位置)。Terminals 显示操作以前使用friendly_id,我可以在其中访问/terminals/albany 并使用slug 'albany' 获取终端。
我已经完成了大部分重构以压缩到仅位置,并且在最后一块(修复视图)。在此过程中,我一直在 Rails Console 中测试并使用 rspec,一切似乎都按预期工作。还有其他模型仍然可以按预期工作。
现在我正在处理 Locations 的新显示页面,尝试访问 /locations/albany 时出现以下错误:
ActiveRecord::RecordNotFound in LocationsController#show
Couldn't find Location with id=albany
但是,当我访问 /locations/5 时,它成功加载了记录。它也适用于 Rails 控制台:
Location.find(5) # returns the correct location object
Location.find(5).slug # returns 'albany'
Location.friendly.find('albany') # returns the correct location object
当我查看 Rails dbconsole 中生成的 slug 时,它们看起来都是正确生成的,并且没有重复。
这是我的模型:
Class Location < ActiveRecord::Base
extend FriendlyId
friendly_id :slug_candidates, use: [:slugged, :history]
def slug_candidates
[
:name,
[:name, :zip],
[:name, :zip, :location_type],
]
end
end
这是我的控制器中的显示操作:
def show
@locations = Location.friendly.find(params[:id])
end
我难住了!有什么提示吗?