我在这里遇到了一些困难,我无法成功调用属于ProjectPagecontrollerProjectPagemodel的方法.

我的ProjectPage控制器中有:

def index
  @searches = Project.published.financed     
  @project_pages = form_search(params)
end

在我的ProjectPage model中:

def form_search(searches)
  searches = searches.where('amount > ?', params[:price_min]) if check_params(params[:price_min])
  @project_pages = ProjectPage.where(:project_id => searches.pluck(:'projects.id'))
end

但是,我无法成功拨打form_search method.

推荐答案

为了完成davidb的回答,你做错了两件事:

1) 当模型函数仅在模型本身中定义时,您正在从控制器调用模型函数.所以你确实需要打电话

Project.form_search

并用

def self.form_search

2) 你在从模型中调用params.在MVC架构中,模型对请求一无所知,因此没有定义参数.相反,你需要把变量传递给你的函数,就像你已经在做的那样...

Ruby-on-rails相关问答推荐

无法在 macos Catalina 上安装 ffi -v '1.9.18'

将 Rails 升级到 6,出现 Blocked host 错误

如何修复:错误:'' 没有提交判断致命:输入“git add”时添加文件失败.在命令提示符下

错误“未初始化的常量 AWS (NameError)”

控制器规格未知关键字:id

监听错误:无法监视目录的更改

未加载库:/usr/local/opt/readline/lib/libreadline.6.dylib (LoadError)

LoadError:无法加载“听”gem(Rails 5)

Ruby 中 as_json 和 to_json 方法的区别

Rails: Sprockets::Rails::Helper::AssetNotPrecompiled 在开发中

Rails:发出 POST 请求时无法验证 CSRF 令牌的真实性

Ruby 更新后:测试失败,“assets资源 未声明为在生产中预编译”

RSpec:期望更改多个

对象不支持此属性或方法 Rails Windows 64bit

Rails 迁移:add_reference 到表,但外键的列名与 Rails 约定不同

如何避免 activesupport 中的循环参数引用警告

由于 libreadline,rails 控制台无法加载

rails 4中secret_key_base的用途是什么

Ruby on Rails 控制台在加载时挂起

带有自定义列名的 Rails belongs_to