2011-06-21 46 views
7

Tôi đang sử dụng mã mặc định được tạo bởi giàn giáo. Tôi đã không thay đổi bất cứ điều gì.phương thức không xác định model_name

Showing app/views/presences/_form.html.erb where line #1 raised: 
undefined method `model_name' for NilClass:Class 

1: <%= form_for(@presence) do |f| %> 
2: <% if @presence.errors.any? %> 
3:  <div id="error_explanation"> 
4:  <h2><%= pluralize(@presence.errors.count, "error") %> prohibited this presence from being saved:</h2> 

Có gì sai ở đây? Tôi không bao giờ gọi một phương thức gọi là "model_name" và mã này được tự động hóa, vậy tại sao nó không hoạt động?

Cảm ơn

Trả lời

20

Hãy thử thêm này để presences_controller của bạn trong new hoặc khác hành động có liên quan được render dạng:

#presuming your model is called Presence 
@presence = Presence.new 
+2

Cảm ơn bạn, điều đó có hiệu quả. Tôi vẫn đang cố gắng hiểu RoR hoạt động như thế nào, nhưng những thông báo lỗi này không hữu ích lắm .. – Bv202

+0

sử dụng ràng buộc của người gọi, và các lỗi đá quý tốt hơn - bạn có một bàn điều khiển trong cửa sổ để gỡ lỗi. –

5

Quan điểm (và phương pháp form_for) hy vọng sẽ thực sự có một sự hiện diện thực mô hình trong biến @presence. Một @ -variable như thế này được truyền qua từ bộ điều khiển, có nghĩa là bạn phải thiết lập nó trong hành động điều khiển.

Trong trường hợp hành động "mới" - bạn không có đối tượng Hiện diện hiện tại mà bạn đang chơi với (không giống như "hiển thị") - vì vậy bạn chỉ cần thiết lập trống, mới.

Phương thức form_for sẽ lấy đối tượng Presence như thế này và: nếu đó là đối tượng hiện có từ db, sẽ tạo đúng tuyến đường POST để cập nhật nó. Nhưng nếu nó là một cái mới, trống, sẽ tạo ra con đường chính xác để tạo một cái mới.

Hy vọng rằng sẽ giúp ...

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