Today's the day

在那毁灭之路,逆流而上


Ruby中的数组过滤

Rails 中生成二级域名

galeki posted @ 2007-12-19 07:29AM in Ruby&Rails进修 with tags 二级域名 subdomain
被 Ruby 耍了一下

Rails 中的 url_for,默认生成的地址是相对地址,当然你可以传入参数 :only_path => false,这样就能生成完整的地址。

但是有的时候,我们要指定二级域名,比如像 is-programmer.com 这样的多用户 blog,我们要生成 http://galeki.is-programmer.com 或者 http://yyc.is-programmer.com 这样的地址,但是 url_for 只能传入 :host => 'xxx',并没有 subdomain 的选项。

当初找到的第一个解决办法,就是 Url For Domain 插件,安装之后,只要指定 :subdomain => 'xxx' 和 :only_path => false,就会生成带有正确二级域名的完整地址。

但是升级至 Rails 2.0 之后,貌似这个插件和 Rails 有冲突,没法正确运行。

后来折腾了一番,发现解决这个问题很简单,只需要在在 controllers/application.rb 中加入下面的代码,重定义核心的 url_for 方法即可:

  1. def url_for(options = {}, *params)
  2.   if options[:subdomain] then
  3.     options[:only_path] = false
  4.     host = []
  5.     host << options.delete(:subdomain)
  6.     host << request.subdomains[1..-1] if request.subdomains.size > 1
  7.     host << request.domain
  8.     options[:host] = host.join '.'
  9.   end
  10.   return super(options, *params)
  11. end

这样就顺利解决了问题,连 :only_path => false 都不用写,直接传入 :subdomain => 'xxx',就会自动生成带有二级域名的完整地址了~

全局相关文章
相关文章
  • No match

Comments Feed

1
Cite 優しの子 [Guest] posted @ 2007-12-21 10:44PM
我觉得搞when you see when you get的编辑器反而不如提供比较健全的接口有效 既然是程序员 那么肯定不喜欢开web浏览器写blog 可能是emacs可能是vim可能是textmate可能是vs... 谁知道他们喜欢用什么写好博客后再提交呢 但是可以肯定的是浏览器绝对不大可能是受欢迎的方式

Head_small
galeki

汗,怎么发到这里来了~

呵呵,别急呀,blog 刚 1.0,很多功能也不是一蹴而就的。

不过你要是用 firefox 的话,可以试试,It's All Text 这个插件~



* Login
*