5

Tôi đang cố gắng đánh giá chỉ số nào cần được hiển thị bên cạnh mục dựa trên nếu nó được xem trước hoặc không, nhận xét mới, v.v. Cho đến khi tôi quyết định sử dụng biểu tượng muốn một số hiển thị.gọi phương thức trong mô hình từ chế độ xem

tại Tờ trình của tôi Mẫu i có

def self.indicator 
    #bunch of if elsif statements returning a number 0-3 
end 

theo quan điểm của tôi, tôi có

<% @reports.each do |report| %> 
    <%= report.indicator %> 
<% end %> 

tôi nhận được undefined method 'indicator'

tôi nghĩ rằng tôi đã có một va li về cách phương pháp làm việc ... nhưng rõ ràng là không, tôi đang làm gì sai?

+0

Vui lòng hiển thị thông báo lỗi đầy đủ. Nó có bao gồm một lớp/đối tượng hay là phương thức không xác định trên nil? –

+0

Ngoài ra, vui lòng hiển thị câu lệnh điều khiển cho chế độ xem có @reports = Report.all hoặc Report.find (...), v.v. –

Trả lời

6

Hãy thử

def indicator 
    #bunch of if elsif statements returning a number 0-3 
end 

Bạn không cần phải tự như nó [sửa để] là một phương pháp cấp lớp.

+3

Bạn có thể nói là có thể gọi phương thức mô hình trong chế độ xem vì chúng tôi bỏ qua bộ điều khiển theo cách đó? Ngoài ra, nếu nó là một thực hành không tốt, thay thế là gì? – gotqn

2

Biến lặp của bạn report được sử dụng để thực hiện từng trường hợp @reports. Với self.indicator bạn đang khai báo một phương thức lớp học (qua self.name). Vì vậy, điều này sẽ làm cho nó có thể gọi Report.indicator. Điều bạn muốn gọi là chỉ trên một phiên bản Báo cáo, do đó bạn có thể xác định chỉ báo phương pháp trong mô hình của mình như sau:

def indicator 
    #bunch of if elsif statements returning a number 0-3 
end 

Bây giờ việc này sẽ hoạt động!

6

Theo quan điểm của bạn, bạn đang gọi một phương pháp dụ indicator trên từng đối tượng báo cáo

report.indicator 

Nhưng trong mô hình của bạn, bạn đã xác định một phương pháp học. Vì vậy, để làm cho nó hoạt động, xác định phương pháp chỉ báo của bạn như một phương pháp ví dụ, quá:

def indicator 
    #bunch of if elsif statements returning a number 0-3 
end 
Các vấn đề liên quan