web-dev-qa-db-ja.com

ビューからControllerのメソッドを呼び出すことができますか(理想的にはヘルパーから呼び出します)?

Rails MVC、ビューからコントローラーのメソッドを呼び出すことはできますか(メソッドはヘルパーから呼び出すことができます)?はいの場合、どのように?

57

答えは次のとおりです。

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

次に、ビューで、ERBで<%または<%=を使用して期待どおりに参照できます。

<% my_method %>
134
sailor

メソッドを「helper_method」として宣言するか、ヘルパーに移動することもできます。

helperとhelper_methodは何をしますか?

23
Pavling

これを試したことはありませんが、パブリックメソッドの呼び出しは次のようになります。

@controller.public_method

およびプライベートメソッド:

@controller.send("private_method", args)

詳細を参照してください こちら

10
Wahaj Ali

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

または、次を使用してヘルパーメソッドとしてすべてのアクションを作成することもできます:helper :all

 class ApplicationController < ActionController::Base
   helper :all

   def foo
    # your foo logic
   end

   def bar
    # your bar logic
   end
 end

どちらの場合でも、すべてのコントローラーからfooとbarにアクセスできます。

6
przbadu