Ruby on rails 3 Rails(3.2.7):覆盖资产主机的图像标签

Ruby on rails 3 Rails(3.2.7):覆盖资产主机的图像标签,ruby-on-rails-3,overriding,asset-pipeline,rails-api,Ruby On Rails 3,Overriding,Asset Pipeline,Rails Api,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" /> 查看脚本: config.acti

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" />
查看脚本:

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" />

收益率:

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" />

应该是:

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" />

我使用的是
railsapi
gem,我猜它禁用了一些资产和视图渲染功能

似乎重新实现(覆盖
image\u标记
)来添加这个非常小的功能应该不会太难。想这样做似乎有点奇怪。然而,我是rails新手,我想知道如何将此作为一种学习经验

问题:

  • 作为最佳实践,我应该将此新代码放在文件结构的何处
  • 我应该用新代码给文件命名吗
  • rails如何知道查看新代码而不是查看旧的image_标记函数

  • 我已经尝试了您的配置,但是当我在我的
    development.rb中使用
    config.action\u controller.asset\u host=“assets.myserver.com”
    时,图像标签的效果与预期一致:

    <img alt="Header" src="http://assets.myserver.com/assets/header.jpg" />
    
    这基本上就是重新打开模块,用您自己的方法替换
    image\u标记
    方法。
    模块AssetTagHelper
    中的所有其他方法保持不变。查看Rails以获得
    image\u标记
    方法的完整“示例”

    文件名并不重要。启动应用程序时,将加载
    config/initializers
    中的所有文件


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

    您是否使用
    rails api
    gem?不,我没有,我在阅读您的问题时显然错过了这一行。