RoR 3.0.9 - 将一个变量从routes.rb传递给application_controller.rb或反之亦然

时间:2012-01-11 19:34:37

标签: ruby-on-rails-3

我有一个多站点项目,通过更改两个变量从一个变为另一个,一个在routes.rb中,另一个在application_controller.rb中。是否可以在这些文件之间传递变量,以便我只需要更改参数以实现所需的更改?

在我的routes.rb文件中,我使用此变量为正确的控制器分配它应该使用的路由。例如:

def showsite
  "mysite1"
end
root :to => "#{showsite}#index"

在application_controller.rb上,我使用相同的参数来获取网站的域名,应该使用的一些布局以及其他内容。例如:

before_filter :set_defaults
def showsite
  "mysite1"
end
def set_defaults
  if "#{showsite}" == "mysite1"
    @domain = 'mysite1.com'
  elsif "#{showsite}" == "mysite2"
    @domain = 'mysite2.com'
  else
    @domain.nil?
  end
end
def special_layout
  "#{showsite}"
end

每次我想展示项目的不同版本时,我都需要更改两个变量。我知道它不是很多,但我必须每天做很多次。我对RoR很新,如果有更好的解决方案,请指导我。谢谢!

1 个答案:

答案 0 :(得分:0)

为什么不使用Rails Initializer。例如。以下内容:

File: `config/initializers/showsite.rb`

具有以下内容:

MyApp::Application.config.showsite = 'mysite1'

然后你应该可以使用:

def showsite
  MyApp::Application.config.showsite
end

和路线文件中的类似内容。