2011-08-03 57 views
5

Có một ứng dụng đường ray (3.0.9) sử dụng HAML, máy chủ phát triển cục bộ chạy tốt. Nhưng khi tôi chạy đường ray s sản xuất -e, trang web của tôi cho lỗi này:Rails môi trường sản xuất phá vỡ với chu kỳ

NoMethodError: undefined method `[email protected]' for #<String:0x00000006331098> 

Lỗi nói nó là trên đường này (từ giao diện, viết bằng HAML):

%tr{:class=> cycle("even","odd")} 

tôi m không tìm thấy bất cứ điều gì về lý do tại sao điều này xảy ra. Hãy giúp tôi.

+0

Lạ ... Tôi sẽ thử chạy trên máy chủ sản xuất thực sự như 'mỏng' và xem kết quả. Bạn có thể đẩy lên Heroku và thử nó khá dễ dàng. – iwasrobbed

+0

Lần đầu tiên tôi tìm thấy vấn đề trên Heroku, sau đó tiến hành thử nghiệm tại địa phương. –

+0

Hãy thử viết lại nó thành: '% tr {: class =>" # {cycle ('even', 'odd')} "}' Không nên tạo sự khác biệt, nhưng mã của bạn cũng không nên phá vỡ vì nó là . – iwasrobbed

Trả lời

1

Phương thức cycle có thực hiện bất kỳ loại chuỗi nào không?

Gần đây, tôi đã gặp lỗi này trong khi xem xét mã.

Mã này là một cái gì đó như thế này:

anObject.instance_method +string_var

Các instance_method được trả lại một chuỗi mà là để được gắn với chuỗi giá trị hiện tại biến string_var.

Thay đổi mã để làm việc này

anObject.instance_method + string_var # Lưu ý không gian sau khi +

Nếu không có không gian phương pháp unary + được gọi trên string_var, nhưng không có phương pháp unary + được định nghĩa trên lớp String. Do đó ngoại lệ.

Lưu ý rằng phương thức unary + được định nghĩa là def [email protected], do đó thông báo ngoại lệ cho biết "Phương thức [email protected] không tìm thấy".

ý chính này làm cho nó rõ ràng: https://gist.github.com/1145457

Anyways, trong trường hợp của bạn, phương pháp cycle (không biết liệu nó được xác định bởi bạn hoặc là một phần của một viên ngọc) có thể được thực hiện một số chuỗi nối không khoảng cách thích hợp HOẶC backtrace ngoại lệ không trỏ đến đúng dòng mã.

Hy vọng điều này sẽ hữu ích.

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