gpt4 book ai didi

ruby-on-rails-3 - 导轨(3.2.7): override image_tag for asset_host

转载 作者:行者123 更新时间:2023-12-04 07:21:59 24 4
gpt4 key购买 nike

development.rb:

config.action_controller.asset_host = "assets.myserver.com"

查看脚本:
<%= image_tag('header.jpg') %>

产量:
<img alt="Header" src="/header.jpg" />

应该是:
<img alt="Header" src="http://assets.myserver.com/header.jpg" />

我正在使用 rails-api我猜的 gem 禁用了一些 Assets 和 View 渲染的东西。

似乎重新实现(覆盖 image_tag )以添加这个非常小的功能应该不会太难。想要这样做似乎有点奇怪。但是,我对 Rails 很陌生,想知道如何将其作为学习经验。

问题:
  • 作为最佳实践,我应该将此新代码放在文件结构中的哪个位置?
  • 我应该用新代码命名文件吗?
  • rails 如何知道查看新代码而不是查看旧的 image_tag 函数?
  • 最佳答案

    我试过你的配置,但是当我使用 config.action_controller.asset_host = "assets.myserver.com"在我的development.rb image_tag按预期工作:

    <img alt="Header" src="http://assets.myserver.com/assets/header.jpg" />

    我已经在 Rails 3.2.7 和 3.2.8 下对其进行了测试,但它在两个版本中都有效。

    更新

    在我的原始答案中,我没有使用 rails-api gem 。使用 rails-api 时 gem image_tag如问题中所述工作。

    为了回答实际问题,您可以在 config/initializers 中添加一个初始化程序.只需创建一个文件,比如说 image_tag_helper.rb ,使用以下代码:
    # config/initializers/image_tag_helper.rb
    module ActionView
    module Helpers
    module AssetTagHelper
    def image_tag(source, options = {})
    options[:src] = "http://#{source}"
    tag("img", options)
    end
    end
    end
    end

    这基本上是重新打开模块并替换 image_tag方法用你自己的方法。 module AssetTagHelper 中的所有其他方法保持不变。看看 Rails repository at github image_tag 的完整“示例”方法。

    文件的名称并不重要。 config/initializers 内的所有文件在应用程序启动时加载。

    基本上这是 Ruby 的一个语言特性,Ruby 允许您在代码中的任何地方重新打开类并添加或替换方法(您可以在 rubylearning.com 找到更多关于此主题的信息)。

    关于ruby-on-rails-3 - 导轨(3.2.7): override image_tag for asset_host,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697266/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com