2009-12-30 46 views
5

Tôi có một đoạn mã JavaScript mà tôi muốn thêm vào một trang, nhưng chỉ trong môi trường sản xuất. Đường ray có một cách để chèn hoặc có điều kiện đưa vào triển khai hay không. Tôi biết tôi có thể làm "nếu Rails.env.production?" Nhưng tôi không muốn kiểm tra điều kiện này mỗi khi trang được tải.sửa đổi tệp erb khi triển khai

Trả lời

1

Những gì tôi làm trong tình huống này là tạo ra một hằng số trong tập tin cấu hình của từng môi trường:

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

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

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

Tôi không thích ý tưởng đặt mã xem trong các tệp cấu hình. Đây là những gì mà người trợ giúp xem là FOR. –

+0

Chắc chắn, công bằng. Thực sự những gì tôi đang cố gắng truyền đạt là: không làm logic có điều kiện dựa trên RAILS_ENV trong lượt xem. Đó là những gì các tập tin cấu hình môi trường là FOR :-) – Ben

5

tôi sẽ không lo lắng về chi phí của một if tuyên bố.

Tại sao không sử dụng một phương pháp tùy chỉnh helper:


def snippet 
    if RAILS_ENV == "production" 
    javascript_tag "whatever" 
    elsif . . .
end
sau đó bạn có thể sử dụng cú pháp giống nhau:

<%= snippet %>

và bạn nhận được một vài lợi ích:

  • quyền truy cập vào đường ray giúp đỡ khác
  • tệp cấu hình của bạn sẽ không được rải rác với html thô
+0

Thực ra, đó là tương tự như những gì tôi có, nhưng tôi đã cố gắng để tránh kiểm tra "nếu". – rornoob

+0

Nếu bạn đang thực sự quan tâm, hãy thử thời gian nó có và không có "nếu", và tôi đoán bạn sẽ không nhận được một sự khác biệt đáng chú ý. – klochner

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