2010-05-26 26 views
7

vài câu hỏi:Hướng dẫn gọi các phương thức điều khiển trong mô-đun trợ giúp?

  1. Có thể gọi một phương thức điều khiển trong một mô-đun helper (ví dụ, ứng dụng helper)?

  2. Nếu vậy, trình trợ giúp xử lý hiển thị chế độ xem như thế nào? Phớt lờ nó đi?

  3. Trong trường hợp nào bạn muốn gọi một phương thức điều khiển từ trình trợ giúp? Có thực hành xấu không?

  4. Bạn có mã mẫu nào trong đó bạn đang gọi các phương thức điều khiển trong trình trợ giúp không?

Trả lời

10

Bạn thường không gọi phương thức điều khiển từ người trợ giúp. Tức là: nếu bạn ngụ ý một phương thức thu thập dữ liệu và sau đó hiển thị một khung nhìn (bất kỳ phương thức nào khác cần được gọi có lẽ không phải là trong một bộ điều khiển). Nó chắc chắn là thực hành xấu và phá vỡ MVC.

Tuy nhiên, hoàn toàn có thể làm cho các phương pháp bộ điều khiển khả dụng trong chế độ xem, ví dụ tuyệt vời là ví dụ như phương pháp current_user.

Để thực hiện một phương pháp điều khiển có sẵn trong các quan điểm, như một phương pháp helper, chỉ cần làm

private 

def current_user 
    # do something sensible here 
    @current_user ||= session[:user] 
end 
helper_method :current_user 

một phương pháp như vậy được định nghĩa tốt nhất trong phần private, hoặc nó có thể là có sẵn như là một hành động (nếu bạn một ký tự đại diện trong định tuyến của bạn).

0

Gọi bộ điều khiển từ người trợ giúp vi phạm mẫu MVC. IMO nếu bạn cần gọi bộ điều khiển từ trình trợ giúp xem Rails (như application_helper) thì có điều gì đó về thiết kế có thể được cải thiện. Mục đích là những người giúp đỡ "giúp" quan điểm, và do đó chỉ nói chuyện với các mô hình.

Tôi sẽ không bảo vệ MVC ở đây (có rất nhiều tài liệu tham khảo trên web), nhưng chuỗi SO này về việc gọi trình điều khiển từ một khung nhìn sẽ giúp bạn bắt đầu.

Calling controller from view? (lưu ý, đây là một chuỗi ASP.NET, vì vậy chỉ các nguyên tắc cấp cao mới có liên quan).

+0

chuỗi bạn đã liên kết là về ASP.NET vì vậy nó có thể không được nhiều giúp đỡ. –

+0

Rất tiếc. Tôi có thể thề rằng tôi đã thấy một câu hỏi Rails tương đối gần đây dọc theo những dòng đó, nhưng rõ ràng là không phải vậy. Tôi đoán điểm là helper xem nên thực sự được xem như là một phần của khung nhìn, và mẫu MVC cau mày khi gọi bộ điều khiển từ khung nhìn. Googling Rails MVC là một bài tập cho OP. – Greg

8

Khai báo phương pháp của bạn trên bộ điều khiển tương ứng

private 
def method_name1 
... 
end 

def method_name2 
... 
end 

Trong phần đầu của bộ điều khiển tuyên bố

helper_method :method_name1, :method_name2 

Bạn có thể muốn công bố những phương pháp dưới trạng thái tin

Và đó là nó, bây giờ bạn có thể sử dụng phương pháp của mình trên một trình trợ giúp

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