我想从我的HAML视图中更改所有link_to
调用的主机和端口。我在我的控制器中实现了default_url_options
,但它从未被调用过。
class WelcomeController < ApplicationController
# ...
def default_url_options
{ host: 'mysite.com:34567' }
end
end
ApplicationController
为ApplicationController < ActionController::Base
这应该有效吗?也许有人能指出我一个有效的例子吗?
我正在使用Rails 4.2.4
答案 0 :(得分:0)
该方法不应该在ApplicationController
范围内吗?
这样所有控制器都将继承并覆盖默认路由主机。
另请注意documentation:
在给定的请求中,实际上并不为每个生成的URL调用该方法;出于性能原因,返回的哈希值被缓存,每个请求最多只有一次调用。
您还可以修改您的环境以从那里应用它,例如修改development.rb
并添加:
Rails.application.routes.default_url_options[:host] = 'mysite.com:34567'
答案 1 :(得分:0)
好的 - 我无法让它按照我想要的方式工作,但我确实找到了一个合理的解决方案:
为我的控制器link_to_asset
创建一个帮助器。使用root_url
尊重我的控制器中default_url_options
返回的内容。
module ApplicationHelper
def link_to_asset(asset)
"#{root_url}#{asset.path}"
end
end
在我的视图中使用,就像这样
%li.link= link_to asset.name, link_to_asset(asset)