我在这里遇到了一些困难,我无法成功调用属于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相关问答推荐

在has_many关系中由两个条件 Select

将两个日期之间的差值转换为Ruby中的iso8601持续时间(如果需要,还可以使用Rails)

Rails 7.1,登录到STDOUT和LOG/Production.log

如何使用 Rails 语义记录器记录整个请求(标头、正文等)

Rails HMAC - 使用应用程序机密作为加密密钥

在 Ruby on Rails html.erb 文件中循环

如何将实例变量传递给 RSpec 共享示例

在 JS 模块中使用 Rails-UJS(带有 webpacker 的 Rails 6)

如何在 rails 中指定和验证枚举?

如何获取 Ruby on Rails 生成的表单元素 id 以供 JavaScript 参考?

simple_forms 自定义数据属性

在 ID 存在时获取表的未知主键

在 Rails/ActiveRecord 列名中使用问号字符

如何在同一个 Rails 控制器操作中处理多个 HTTP 方法

Heroku Postgres 错误:PGError:错误:关系组织不存在(ActiveRecord::StatementInvalid)

'respond_to' 格式语句中的 `:location => ...` 和 `head :ok` 是什么意思?

通过get in rails传递参数数组

停止 Rails 为视图和助手生成规范测试?

按照给定 ID 数组的顺序按 ID 查找模型记录

Rails:您已经激活了 rake 10.3.1,但您的 Gemfile 需要 rake 10.2.2 (Gem::LoadError)