복붙노트

[RUBY-ON-RAILS] (우리가 이상적으로 도우미에서 전화로) 우리는보기에서 컨트롤러의 메소드를 호출 할 수 있습니까?

RUBY-ON-RAILS

(우리가 이상적으로 도우미에서 전화로) 우리는보기에서 컨트롤러의 메소드를 호출 할 수 있습니까?

레일 MVC에서는 (방법은 도우미에서 전화 호출 할 수 있기 때문에) 뷰에서 컨트롤러의 메소드를 호출 할 수 있습니까? 예라면, 어떻게?

해결법

  1. ==============================

    1.여기에 대답은 :

    여기에 대답은 :

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

    그런 다음보기에서, 당신은 % 또는 <% = <기대할 정확히 ERB에서 참조 할 수 있습니다 :

    <% my_method %>
    
  2. ==============================

    2.당신은 아마도 "helper_method"로 당신의 방법을 선언, 또는 대안 도우미로 이동합니다.

    당신은 아마도 "helper_method"로 당신의 방법을 선언, 또는 대안 도우미로 이동합니다.

    무엇 도우미 수행하고 helper_method은 무엇입니까?

  3. ==============================

    3.지금이 시도하지만, public 메소드를 호출하면과 유사하지 않은 :

    지금이 시도하지만, public 메소드를 호출하면과 유사하지 않은 :

    @controller.public_method
    

    및 민간 방법 :

    @controller.send("private_method", args)
    

    여기에서 자세한 내용을 참조하십시오

  4. ==============================

    4.helper_method를 사용하여 액션 도우미 메서드를 만들 : your_action_name를

    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
    

    도우미 : 또는 당신은 또한 사용하여 도우미 방법으로 모든 작업을 할 수있는 모든

     class ApplicationController < ActionController::Base
       helper :all
    
       def foo
        # your foo logic
       end
    
       def bar
        # your bar logic
       end
     end
    

    두 경우 모두, 당신은 모든 컨트롤러에서 foo는 바 액세스 할 수 있습니다.

  5. from https://stackoverflow.com/questions/8906527/can-we-call-a-controllers-method-from-a-view-as-we-call-from-helper-ideally by cc-by-sa and MIT license