Rails 中生成二级域名
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 方法即可:
-
def url_for(options = {}, *params)
-
if options[:subdomain] then
-
options[:only_path] = false
-
host = []
-
host << options.delete(:subdomain)
-
host << request.subdomains[1..-1] if request.subdomains.size > 1
-
host << request.domain
-
options[:host] = host.join '.'
-
end
-
return super(options, *params)
-
end
这样就顺利解决了问题,连 :only_path => false 都不用写,直接传入 :subdomain => 'xxx',就会自动生成带有二级域名的完整地址了~
Ruby中的数组过滤
如何在ruby中用简洁的方法过滤数组中的元素
Ruby中的字符串与符号
简单介绍Ruby中的字符串与符号两种变量类型的区别。
Ruby中 respond_to? 和 send 的用法
介绍了下 Ruby 中 respond_to? 和 send 两个方法的应用。
用rails实现简单的网页伪静态化
只需要修改几个字符,就可以让rails生成.html后缀的url,实现基于rails的简单的网页伪静态化。