在模型中使用image_url帮助程序



我正在尝试在我的模型中使用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
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)

我同意 arieljuod 的观点,这是一个观点问题。但是,如果脏实现确实需要它,则可以执行Object.new.extend(ActionView::Helpers::AssetUrlHelper).image_url('foo')

是的,这是非常正确的,你不能调用那个范围! 这不是模型的方法。 这是一个操作视图帮助程序方法。 https://apidock.com/rails/ActionView/Helpers/AssetUrlHelper/image_url

就我所看到的而言,这不是拥有这种逻辑的正确位置。考虑将其放在一个decorator中,以抽象此非业务逻辑。

最新更新