我在ActionView表单构建器中添加了language_select
方法:
# app/helpers/form_helper.rb
class ActionView::Helpers::FormBuilder
include ActionView::Helpers::TagHelper
include ActionView::Helpers::FormTagHelper
include ActionView::Helpers::FormOptionsHelper
include ActionView::Helpers::AssetTagHelper
def language_select(method, options = {})
image_tag("language-flags/16/en.png")
end
end
问题是image_tag
将图片返回到/images/language-flags/16/en.png
,但不存在。我在app/assets/images/language-flags/16/fr.png
中有一个图像,但它不是通过Sprockets中间件提供的。其他任何地方image_tag
都能正常运作。
在查看Rails的源代码之后,似乎这是image_tag
的标准行为,更准确地说,asset_path
并且Sprockets实际上修改了此行为以包括例如文件摘要。似乎asset_path
的这种修改在这种情况下不可用。
答案 0 :(得分:0)
解决方案是在表单构建器的上下文中调用image_tag
属性上的视图助手(如@template
)。
def language_select(method, options = {})
@template.image_tag("language-flags/16/en.png")
end