Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 如何从控制器关注点调用模型_Ruby On Rails_Ruby On Rails 4_Namespaces - Fatal编程技术网

Ruby on rails 如何从控制器关注点调用模型

Ruby on rails 如何从控制器关注点调用模型,ruby-on-rails,ruby-on-rails-4,namespaces,Ruby On Rails,Ruby On Rails 4,Namespaces,我有一个模型 models/ contract.rb 我有一个控制器的问题 controllers/ concerns/ search.rb 看起来像这样 module Search def get_contracts c = Contract.new end end 当我尝试调用get_contracts时,出现以下错误: 无法自动加载常量搜索::合同,应为 /用户/me/myapp/app/controllers/concerns/search/

我有一个模型

models/
  contract.rb
我有一个控制器的问题

controllers/
  concerns/
    search.rb
看起来像这样

module Search
  def get_contracts    
    c = Contract.new
  end
end
当我尝试调用get_contracts时,出现以下错误:

无法自动加载常量搜索::合同,应为 /用户/me/myapp/app/controllers/concerns/search/contract.rb来定义 它


是否有更好的方法从控制器关注点访问模型?

看起来您还有一个
合同
模块,这就是为什么会出现该错误。您需要以某种方式将
Contract
与命名空间一起使用,或者尝试使用
::Contract
。但是无论如何,您有另一个同名的模块会产生这种冲突,我认为您应该命名一些东西,这样您就不会出现这些错误。谢谢您,使用双冒号,如::Contract works尽管双冒号
会起作用,但仔细设计的名称间隔策略通常更可取。