【问题标题】:Conditional rendering with Rails depending on the environment根据环境使用 Rails 进行条件渲染
【发布时间】:2012-02-23 03:36:40
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    你可以使用:

    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 %>
    

    【讨论】:

    • 噢,废话!我正在查看实时网站:-)
    • 为了做什么? Rails.env 可以从任何地方访问......我会用一个例子来更新答案。
    • 好吧! :) 无论如何我都更新了答案。它会帮助其他人:)
    • 这太棒了。为我节省了很多时间。
    【解决方案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

    【讨论】:

      猜你喜欢
      • 2021-07-10
      • 2011-03-15
      • 1970-01-01
      • 2018-05-08
      • 2020-04-21
      • 2020-08-21
      • 2020-01-15
      • 1970-01-01
      • 2020-11-07
      相关资源
      最近更新 更多