【问题标题】:image_tag not working in ActionView FormBuilder helperimage_tag 在 ActionView FormBuilder 助手中不起作用
【发布时间】:2016-10-04 03:17:00
【问题描述】:

我在 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 的这种修改在此上下文中不可用。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 sprockets


    【解决方案1】:

    解决方案是在表单构建器的上下文中调用@template 属性上的视图助手(如image_tag)。

    def language_select(method, options = {}) 
      @template.image_tag("language-flags/16/en.png")
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      相关资源
      最近更新 更多