web-dev-qa-db-ja.com

RubyコントローラーのRailsヘルパーメソッドを配置する場所

特定の(またはすべての)コントローラーに必要なRubyメソッドがいくつかあります。それらを/app/helpers/application_helper.rbに入れてみました。ビューで使用されるメソッドにそれを使用しました。ただし、コントローラーにはこれらのメソッドは表示されません。それらを配置する必要がある別の場所はありますか、それらのヘルパーメソッドに異なる方法でアクセスする必要がありますか?

最新の安定したRailsを使用します。

67
at.

ApplicationController内でメソッドを定義する必要があります。

72
Ryan Bigg

Rails 4以降では、懸念事項があります。ここにはまともな記事があります http://richonrails.com/articles/Rails-4-code-concerns-in -active-record-models

基本的に、コントローラーフォルダーを見ると、懸念サブフォルダーが表示されます。これらの行に沿ってモジュールを作成します

module EventsHelper
  def do_something
  end
end

次に、コントローラにそれを含めるだけです

class BadgeController < ApplicationController
  include EventsHelper

  ...
end
62
John Cleary

アプリケーションコントローラ内でメソッドを定義する必要があります。メソッドが少ない場合は、次のようにできます

class ApplicationController < ActionController::Base    
  helper_method :first_method
  helper_method :second_method

  def first_method
    ... #your code
  end

  def second_method
    ... #your code
  end
end

次のようにヘルパーファイルを含めることもできます

class YourController < ApplicationController
  include OneHelper
  include TwoHelper
end
28
Muhamamd Awais

view_contextを使用して、コントローラーからヘルパーメソッドを呼び出すことができます。

view_context.my_helper_method
15
David

ライアン・ビッグの反応は良いです。

他の可能な解決策は、コントローラーにヘルパーを追加することです:

class YourController < ApplicationController
  include OneHelper
  include TwoHelper
 end

宜しくお願いします!

7
hyperrjas