我有一个多站点项目,通过更改两个变量从一个变为另一个,一个在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很新,如果有更好的解决方案,请指导我。谢谢!
答案 0 :(得分:0)
为什么不使用Rails Initializer。例如。以下内容:
File: `config/initializers/showsite.rb`
具有以下内容:
MyApp::Application.config.showsite = 'mysite1'
然后你应该可以使用:
def showsite
MyApp::Application.config.showsite
end
和路线文件中的类似内容。