我从一个简单的自定义模型(不是ActiveRecord,普通的ActiveModel)渲染页面,我无法获取url / path助手来生成带有id的url,如下所示:
person_path(model)
# I want: /person/3
# I get: /person
是否有任何具体的类我必须继承或运行才能实现,以便url助手可以使用我的自定义模型?
我听说过to_param
,但它不起作用,至少不是这样:
class Person
include ActiveModel::Model
def id
3
end
def to_param
id.to_s
end
end
根据the documentation应该有效:
任何包含ActiveModel :: Model的类都可以与form_for一起使用, 渲染和任何其他Action View辅助方法,就像Active一样 记录对象。
但我想网址助手仍然需要缺少功能
答案 0 :(得分:2)
您需要定义一个返回persisted?
的{{1}}方法:默认实现始终返回false,这会导致rails生成一个没有id的路径。
答案 1 :(得分:1)
如果您可以分享config/routes.rb
的代码或至少rake routes
的结果,那将是件好事。
再次仔细检查您的路线。我认为您可能已将路由定义为单个资源resource :person
,该资源不会在网址中添加ID。