我正在尝试在模型中使用image_url帮助器。我在模型上也有image_url属性(无法更改)。当我调用image_url时,它的帮助程序方法似乎正在模型上调用该方法。我收到错误wrong number of arguments (given 1, expected 0)
def public_image
if self.avatar && photo_public?
self.avatar.remote_url
else
image_url '/client/src/assets/images/icons/anon-small.svg'
end
end
答案 0 :(得分:5)
image_url
是视图帮助器,不应在模型内部使用,您应该将该逻辑移至视图的帮助器
#application_helper.rb
def public_image(user)
if user.avatar && user.photo_public?
user.avatar.remote_url
else
image_url '/client/src/assets/images/icons/anon-small.svg'
end
end
您认为将user.public_image
更改为public_image(user)
答案 1 :(得分:0)
我同意arieljuod的观点,这是关注点。但是,如果确实需要肮脏的实现,则可以执行Object.new.extend(ActionView::Helpers::AssetUrlHelper).image_url('foo')
答案 2 :(得分:0)
是的,非常正确,您不能调用该示波器! 这不是模型的方法。 这是一个ActionView辅助方法。 https://apidock.com/rails/ActionView/Helpers/AssetUrlHelper/image_url
对于我所看到的,这不是拥有此逻辑的正确位置。考虑将其放在decorator
中以抽象该非业务逻辑。