2009-12-30 2 views
5

У меня есть фрагмент JavaScript, который я хочу добавить на страницу, но только в производственной среде. У рельсов есть способ включить или условно включить в развертывание. Я знаю, что могу сделать «если Rails.env.production?» Но я бы не стал проверять это условие каждый раз, когда страница загружается.изменить файл erb при развертывании

ответ

1

Что делать в этой ситуации является создание постоянная в конфигурационном файле каждой среды в:

#config/environments/development.rb 
SNIPPET = "" 

#config/environments/production.rb 
SNIPPET = "<script src='whatever.js'></script>" 

#app/views/file.html.erb 
<%= SNIPPET %> 
+0

Мне не нравится идея размещения кода просмотра в файлах конфигурации. Это то, к чему обращаются помощники. –

+0

Несомненно, это справедливо. На самом деле я пытаюсь передать: не делайте условную логику, основанную на RAILS_ENV, в представлениях. Вот что такое файлы конфигурации среды FOR :-) – Ben

5

я бы не беспокоиться о накладных расходах одного if заявления.

Почему бы не использовать метод пользовательского помощника:


def snippet 
    if RAILS_ENV == "production" 
    javascript_tag "whatever" 
    elsif . . .
end
, то вы можете использовать один и тот же синтаксис:

<%= snippet %>

и вы получите пару преимуществ:

  • доступ к другим рельсам хелперов
  • ваш файл конфигурации не будет засорен сырым html
+0

Собственно, это похоже на то, что у меня есть, но я пытался избежать проверки «если». – rornoob

+0

Если вы действительно обеспокоены, попробуйте синхронизировать его с и без «if», и я предполагаю, что вы не получите заметной разницы. – klochner

Смежные вопросы