2012-05-03 27 views
8

hello ive đã cố gắng để có được môi trường hiện tại trong đường ray nhưng tôi nghĩ rằng im làm điều gì đó sai với javascript của tôi, nhưng tôi dường như không biết những gì. trong ứng dụng của tôi.js tôi có ...làm thế nào để có được môi trường trong tập tin javascript trong đường ray ứng dụng

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"; 
} 

nó luôn đi vào tuyên bố khác của tôi ngay cả khi tôi đang ở chế độ phát triển. tôi đang làm gì vậy? cảm ơn bạn

làm thế nào để có được môi trường trong javascript tập tin trong ứng dụng đường ray

+2

Bạn có thể xác nhận rằng 'Rails.env' var iable đang được outputted trong kịch bản? Bạn có thể cần phải thay đổi phần mở rộng thành 'application.js.erb' để đảm bảo nó được phân tích cú pháp – rjz

+0

hmm trên cảnh báo đầu tiên của tôi, nó sẽ nói <% = Rails.env -%>. sau đó vào ngày thứ 2 của nó không xác định. sẽ thay đổi nó thành application.js.erb làm rối tung mọi thứ? như đường ống của tôi? – david

+0

nó hoạt động cảm ơn bạn! – david

Trả lời

10

Rails' đường ống tài sản sẽ tài sản chỉ preprocess mà bạn đánh dấu cho phân tích cú pháp. Cho dù những tài sản đó sẽ kết thúc lên CSS, JS hay bất kỳ thứ gì khác, bạn có thể đánh dấu các tệp để phân tích cú pháp bằng cách điều chỉnh phần mở rộng của tệp.

Trong trường hợp này, nơi bạn đang cố gắng xuất ra biến ERB, bạn cần thay đổi phần mở rộng của tệp thành application.js.erb.

Có một cuộc thảo luận mở rộng về bộ tiền xử lý here.

+0

cảm ơn sự giúp đỡ của bạn! – david

34

Bạn không cần chuyển trực tiếp tệp đó vào tệp javascript của mình. Bạn có thể làm điều đó trong file erb xem như thế này ví dụ:

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

hoặc tốt hơn này:

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

hoặc tốt nhất (IMHO) này:

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

và sau đó:

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

cảm ơn ý tưởng! bệnh hãy nhớ điều đó trong tâm trí =) – david

Các vấn đề liên quan