4

MongoID gem を使用して、Rails アプリケーションのデータベースとして MongoDB を使用しています。n aafter_create コールバック メソッドを使用してモデルからヘルパー メソッドを呼び出したい。それはどのように可能ですか?
私のモデルコードは次のとおりです。

class Department
  include ApplicationHelper
  after_create :create_news
  private
  def create_news
    @user = ApplicationHelper.get_current_users
  end
end

私のヘルパーコードは次のとおりです。

module ApplicationHelper
  def get_current_users
    current_user
  end
end

新しい部門を作成すると、次のエラーが発生します。

undefined method `get_current_users' for ApplicationHelper:Module

エラーを削除するには?
前もって感謝します。

4

3 に答える 3

19

私もモンゴイドを使用しており、これを常に使用しています。ただし、モンゴイドに固有のものではありません。

ApplicationController.helpers.my_helper_method
于 2014-10-07T15:14:02.043 に答える
1

ビューで現在のユーザーを返すために使用できるヘルパー メソッドが必要な場合は、次のように ApplicationController で実行できます。

private
def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end 
helper_method :current_user

その後、これを任意のビューで使用できます。

モデル内の任意のメソッドに、それが扱っているユーザーを認識させたい場合は、 controller でメソッドを呼び出すときに、メソッドに引数として渡し ます。@current_user

あなたのコードは不完全なようで、何を達成しようとしているのかよくわかりませんが、これはかなり標準的な方法です。

于 2012-12-30T07:38:40.270 に答える
-1

モジュールファイルの名前が適切であることを確認してください。つまり、あなたの場合は application_helper.rb であり、ヘルパーライブラリに配置されています。

ApplicationController (app/controller/application_controller.rb) にヘルパーを含めることもできます。

于 2012-12-30T07:09:57.980 に答える