Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从模型中调用helper方法?_Ruby On Rails_Ruby On Rails 3_Model - Fatal编程技术网

Ruby on rails 如何从模型中调用helper方法?

Ruby on rails 如何从模型中调用helper方法?,ruby-on-rails,ruby-on-rails-3,model,Ruby On Rails,Ruby On Rails 3,Model,我使用MongoDB作为数据库,在我的Rails应用程序中使用MongoID gem。我想用n aaafter\u create回调方法从模型中调用helper方法。怎么可能呢?我的型号代码是: class Department include ApplicationHelper after_create :create_news private def create_news @user = ApplicationHelper.get_current_users e

我使用MongoDB作为数据库,在我的Rails应用程序中使用MongoID gem。我想用n aaafter\u create回调方法从模型中调用helper方法。怎么可能呢?
我的型号代码是:

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
我的助手代码是:

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

如何删除错误?
提前感谢。

确保模块文件的名称正确,这意味着在您的应用程序中是\u helper.rb,并且它位于helpers库中


您还可以尝试在ApplicationController(app/controller/application\u controller.rb)中包含帮助程序。

如果您希望在视图中使用帮助程序方法返回当前用户,您可以在ApplicationController中执行此操作,例如:

private
def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end 
helper_method :current_user
然后您可以在任何视图中使用它

如果您想让模型中的某个任意方法知道它正在处理的用户,则在控制器中调用该方法时,将其作为参数传递给当前用户


您的代码似乎不完整,因此我无法真正了解您要实现的目标,但这是一种非常标准的做法。

我也使用mongoid,并且一直使用它。但这不应该是mongoid独有的

ApplicationController.helpers.my_helper_method

你为什么要让这个做助手?帮助程序通常用于为视图生成标记。此方法似乎属于某个模型。我使用此帮助程序获取模型中的当前用户信息。然后将其改为模型中的方法?我无法在模型中使用当前用户。所以我尝试了另一种方法。我的实际问题是:如何在model@gami控制器通常负责实例化模型并向其传递数据。将
@current_user
传递给它,就像传递任何其他数据一样。您应该发布更多的代码,比如您使用此模型的控制器。这似乎是在以后的rails版本中故意破坏的,因为rails团队认为我们不应该这样做。所以只要“重复你自己”并在两个位置添加评论,这样你就知道要同时在两个位置更改它。或者,您可以使用“模块”功能,但对于小事情来说,这是过分的。