Mic*_*rey 6 overriding ruby-on-rails-3 asset-pipeline rails-api
development.rb:
config.action_controller.asset_host = "assets.myserver.com"
Run Code Online (Sandbox Code Playgroud)
查看脚本:
<%= image_tag('header.jpg') %>
Run Code Online (Sandbox Code Playgroud)
收益率:
<img alt="Header" src="/header.jpg" />
Run Code Online (Sandbox Code Playgroud)
应该:
<img alt="Header" src="http://assets.myserver.com/header.jpg" />
Run Code Online (Sandbox Code Playgroud)
我正在使用rails-api我猜的宝石禁用一些资产和查看渲染的东西.
似乎不应该太难以重新实现(覆盖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" />
Run Code Online (Sandbox Code Playgroud)
我已经在 Rails 3.2.7 和 3.2.8 下测试了它,但它在两个版本中都有效。
更新
在我原来的答案中,我没有使用rails-api宝石。使用rails-api宝石时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
Run Code Online (Sandbox Code Playgroud)
这基本上所做的是重新打开模块并image_tag用您自己的方法替换该方法。其中的所有其他方法module AssetTagHelper保持不变。查看github 上的 Rails 存储库,获取该方法的完整“示例” image_tag。
文件的名称并不重要。config/initializers当应用程序启动时,将加载其中的所有文件。
基本上,这是 Ruby 的一项语言功能,Ruby 允许您在代码中的任何位置重新打开类并添加或替换方法(您可以在rubylearning.com上找到有关此主题的更多信息)。
| 归档时间: |
|
| 查看次数: |
1800 次 |
| 最近记录: |