我正尝试在我的模型中使用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
发布于 2018-09-06 01:17:04
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)
发布于 2018-09-06 01:26:11
我同意arieljuod的观点,这是一个视图问题。然而,如果一个脏的实现确实需要它,那么可以使用Object.new.extend(ActionView::Helpers::AssetUrlHelper).image_url('foo')
发布于 2018-09-06 01:28:03
是的,这是非常正确的,你不能调用那个作用域!这不是一个模型的方法。这是一个ActionView帮助器方法。https://apidock.com/rails/ActionView/Helpers/AssetUrlHelper/image_url
就我所见,这不是拥有这种逻辑的正确地方。考虑将其放在decorator
中以抽象此非业务逻辑。
https://stackoverflow.com/questions/52190310
复制相似问题