我的模型有一个some_date
字段和一个这样的getter:
def day
some_date.day
end
然后我有一条路线:get 'foo/:day/:id' => 'foo#show', as: 'foo'
。
现在,调用foo_url(Foo.first)
会导致 UrlGenerationError ...缺少必需的键:[:day] ,因为Foo.first
只返回id: 1, some_date: '...'
而不包括({虚拟)day
属性。
在这种情况下,如何确保我的虚拟属性被视为常规属性,从而调用foo_url?
答案 0 :(得分:0)
看看to_param
方法,我认为这就是你需要的。
返回一个String, Action Pack用于构建URL的字符串 此对象。默认实现将此记录的id作为a返回 字符串,如果此记录未保存,则为nil。
class User < ActiveRecord::Base
def to_param # overridden
name
end
end
user = User.find_by_name('Phusion')
user_path(user) # => "/users/Phusion"