2012-05-03 13 views
8

hello iveは現在の環境をレールで取得しようとしていましたが、私のjavascriptで何か間違っていると思いますが、何も分からないようです。私のapplication.jsで...javascriptで環境を取得する方法

var rails_env = '<%= Rails.env -%>'; 
alert(rails_env); 
alert(rails_env.value); 
if(rails_env == 'development'){ 
    alert('inside if') 
    var indexName = "idx"; 
} 
else{ 
    alert('inside else') 
    var indexName = "idx_production"; 
} 

私は開発モードであっても常にelse文に入ります。私は間違って何をしていますか?あなたは、解析のためにマークレールのアプリではJavaScriptファイルで

+2

あなたは 'Rails.env' var iableはスクリプトで出力されていますか?拡張子を 'application.js.erb'に変更して、最初の警告で – rjz

+0

hmmと解釈する必要があるかもしれません。<%= Rails.env - %>と言います。私の2番目には未定義です。それをapplication.js.erbに変更して何かを駄目にするでしょうか?私のパイプラインのように? – david

+0

ありがとうございます! – david

答えて

10

Railsのアセットパイプラインを環境を得るためにどのように

がする唯一の前処理資産お願いします。これらのアセットがCSS、JS、またはその他のものになっても、ファイル拡張子を調整することによって、解析するファイルをマークすることができます。

この場合、ERB変数を出力しようとしている場合は、ファイルの拡張子をapplication.js.erbに変更する必要があります。

プリプロセッサの詳細については、hereを参照してください。

+0

ご協力いただきありがとうございます。 – david

34

javascriptファイルに直接渡す必要はありません。あなたは、たとえば次のようにerbビューファイルでそれを行うことができます。

<script> 
    window._rails_env = "<%= Rails.env %>" 
</script> 

以上をこの:

<%= javascript_tag do %> 
    window._rails_env = "<%= Rails.env %>" 
<% end %> 

またはベスト(私見)本:

<body data-env="<%= Rails.env %>"> 
    ... 

、その後:

var railsEnv = $('body').data('env') 
+0

アイデアありがとう!それを心に留めておく=) – david

関連する問題