在我的Character
模型中,我添加了:
character.rb
before_save do
self.profile_picture_url = asset_path('icon.png')
end
但是,对于数据库中已存在的所有字符,其profile_picture_url
为nil
。因此,我想进入控制台并遍历所有这些并设置它。在控制台中我尝试了:
Character.find_each do |c|
c.profile_picture_url = asset_path('icon.png')
end
但这会产生错误:
NoMethodError: undefined method `asset_path' for main:Object
我希望我已经充分地传达了我想要实现的目标。我哪里错了?
答案 0 :(得分:5)
查看AssetHelper的文档:
此模块提供了生成资产路径和网址的方法。
您可以通过以下几种方式访问控制台中的asset_path
:
ActionController::Base.helpers.asset_path('icon.png')
或的
include ActionView::Helpers::AssetUrlHelper
asset_path('icon.png')
另外在旁注上并与问题分开,如果您正在更新所有Character
,我会profile_picture_url
用于Character.all.update_all(profile_picture_url: asset_path('icon.png')
属性。
{{1}}
答案 1 :(得分:1)
如果您尝试拨打asset_path
,而不是帮助者或观点,请调用
ActionController::Base.helpers.asset_path("icon.png")