2012-01-18 37 views
45

Vâng, tôi biết nó không nên được hỏi ở đây, nhưng tôi đã không tìm thấy một nơi tốt hơn để có được câu trả lời. Câu hỏi này được hỏi trong một cuộc phỏng vấn của công ty tốt.Chúng ta có thể gọi phương thức của Controller từ một khung nhìn (như chúng ta gọi từ helper lý tưởng) không?

Trong Rails MVC, bạn có thể gọi phương thức của trình điều khiển từ chế độ xem (như chúng tôi gọi từ trình trợ giúp lý tưởng) không? Nếu có, làm thế nào?

Tôi không thể trả lời câu hỏi đó vào lúc đó. Bạn vui lòng giúp đỡ?

+0

Tôi chỉ muốn hỏi là nó có thể hay không ... Nó không nên được thực hiện! –

Trả lời

113

Dưới đây là câu trả lời:

class MyController < ApplicationController 
    def my_method 
    # Lots of stuff 
    end 
    helper_method :my_method 
end 
+6

Tôi đã nói điều này ... – Pavling

+6

làm cách nào để bạn gọi 'my_method' từ chế độ xem? –

+4

<% = my_method%> hoặc <% my_method%> – Laerte

9

Chưa bao giờ cố gắng này, nhưng gọi phương pháp nào là tương tự như:

@controller.public_method 

và phương pháp riêng:

@controller.send("private_method", args) 

Xem thêm chi tiết here

5

làm phương pháp hành động helper của bạn sử dụng helper_method :your_action_name

class ApplicationController < ActionController::Base 
    def foo 
    # your foo logic 
    end 
    helper_method :foo 

    def bar 
    # your bar logic 
    end 
    helper_method :bar 
end 

Hoặc bạn cũng có thể làm cho tất cả những hành động như phương pháp helper của bạn sử dụng: helper :all

class ApplicationController < ActionController::Base 
    helper :all 

    def foo 
    # your foo logic 
    end 

    def bar 
    # your bar logic 
    end 
end 

Trong cả hai trường hợp, bạn có thể truy cập foo và thanh từ tất cả các bộ điều khiển.

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