使用Rails进行条件渲染取决于环境

时间:2012-01-31 12:00:11

标签: ruby-on-rails ruby-on-rails-3 view

是否有适当的方法来检测应用程序布局中的环境(开发或生产)?说,我不想在我的本地沙箱中呈现GA代码。

在Django中,我们使用{% if not debug %}{% include '_ga.html' %}{% endif %}。我应该在Rails中使用什么?感谢。

2 个答案:

答案 0 :(得分:29)

您可以使用:

Rails.env.production?
#or
Rails.env.development?
#or
Rails.env.test?

有关详细信息,请参阅docs。所以,你可以这样做:

<% if Rails.env.development? %>
  <p>Dev Mode</p>
<% else %>
  <p>Production or test mode</p>
<% end %>

答案 1 :(得分:2)

我意识到这个问题很老,但我只是在寻找类似的问题时遇到了它。我认为更好的做法是不要问“我在什么环境中?”而是根据您尝试执行的操作来设置配置。因此,如果您想在开发中添加自定义调试页脚,您可以在 config/application.rb 中添加以下内容:

config.show_debug_footer = false

这设置了默认行为。然后在 config/environments/development.rb 中添加:

config.show_debug_footer = true

然后在您的代码中,您需要更改行为的地方,您可以检查:

if Rails.configuration.show_debug_footer
  [...]
end

这是一种非常灵活的自定义配置方式,可根据您的环境进行更改,并保持您的代码高度可读。

Rails documentation for Custom Configuration