2013-06-06 29 views
1

我想:传入Rails路由的对象是否可以改变主机名?

channel_url(channel_object)  # http://domain1.com/something/here 
channel_url(other_channel_object) # http://domain2.com/something/here 

基本上,传递到channel_url的对象应该是能够改变的主机名。

我可以通过定义一个名为channel_url的帮助程序来实现,但我更愿意使用生成的rails路径方法。

回答

1

这不能用开箱即用的方式完成。路由是为了处理应用程序内的路由。即使是子域名也不是其中的一部分。

您可以将url_to方法从ActionView::Helpers::UrlHelper更改为查看传入它的对象。

def url_for(options={}) 
    if options.respond_to? :domain 
    super options, domain: options.domain 
    else 
    super 
    end 
end 

类似的东西,因为你的channel_object响应域。 :)

希望这会有所帮助。

+1

你是不是指'url_for'? –

+0

我的应用程序服务于多个域,顺便说一句,所以它仍然被认为是“在应用程序内”。 –

+0

看起来像这样可以通过'to_param'方法完成,该方法返回一个字符串或者一个响应'path','domain'等的对象''url_for'可以找到它。 –

相关问题