2009-12-30 18 views
5

Ho un frammento di JavaScript che desidero aggiungere a una pagina, ma solo nell'ambiente di produzione. Le rotaie hanno un modo per inserire o includere condizionalmente sulla distribuzione. So che potrei fare "se Rails.env.production?" Ma preferirei non controllare questa condizione ogni volta che viene caricata la pagina.modifica file ERB sull'implementazione

risposta

1

Quello che faccio in questa situazione è creare una costante nel file di configurazione di ogni ambiente:

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

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

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

Non mi piace l'idea di inserire il codice di visualizzazione nei file di configurazione. Questo è ciò che gli helper della vista sono FOR. –

+0

Certo, è giusto. In realtà quello che sto cercando di comunicare è: non fare la logica condizionale basata su RAILS_ENV nelle viste. Questo è ciò che i file di configurazione dell'ambiente sono FOR :-) – Ben

5

non sarei preoccupato per il sovraccarico di uno if dichiarazione.

Perché non utilizzare un metodo di supporto personalizzato:


def snippet 
    if RAILS_ENV == "production" 
    javascript_tag "whatever" 
    elsif . . .
end
quindi è possibile utilizzare la stessa sintassi:

<%= snippet %>

e si ottiene un paio di vantaggi:

  • accesso ad altre rotaie aiutanti
  • il file di configurazione non sarà cosparso di html grezzo
+0

In realtà, è simile a quello che ho, ma stavo cercando di evitare il controllo "se". – rornoob

+0

Se sei davvero preoccupato, prova a cronometrare con e senza "se", e immagino che non otterrai una differenza notevole. – klochner