首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ransack搜索错误

Ransack搜索错误
EN

Stack Overflow用户
提问于 2018-01-16 05:34:29
回答 1查看 1.5K关注 0票数 1

我正在使用Rails 4.2.5,Ruby2.2,ransack。我正在尝试使用Ransack实现搜索功能。我有这样的东西:

这些代码在abc_controller.rb中:

代码语言:javascript
复制
def checked_users
  emails = ["abc@abc.com", "a@a.com", "b@b.com"]
  users_list = User.where("email in (?)", emails)
  @q = users_list.ransack params[:q]
end

这些是checked_users.html.haml中的代码:(忽略这里的url路径。它是正确的,因为现在我已经改变了它)

代码语言:javascript
复制
= search_form_for @q, url: checked_users_path(some_id: id) do |form|
  = form.text_field :user_name_or_user_email_cont, placeholder: 'Name or email', class: 'form-control'

在routes.rb中:

代码语言:javascript
复制
resources :xyz do
  resources :mno do
    get 'checked_users', controller: 'abc', action: 'checked_users'
  end
end

通过这些代码,我得到了一个错误:

代码语言:javascript
复制
ActionView::Template::Error (undefined method `user_name_or_user_email_cont' for Ransack::Search<class: User, base: Grouping <combinator: and>>:Ransack::Search):

不知道为什么我会犯这个错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-16 14:17:14

因为您在搜索用户,所以我认为您可以去掉文本字段中的user前缀。

例如,您有:

代码语言:javascript
复制
form.text_field :user_name_or_user_email_cont, placeholder: 'Name or email', class: 'form-control'

将其更改为类似于此的方式应该有效:

代码语言:javascript
复制
form.text_field :name_or_email_cont, placeholder: 'Name or email', class: 'form-control'

此外,如果可以的话,我会考虑使用ransack的search_field而不是text_field

这是一些额外的信息。我相信,如果您想搜索关联,只需要使用像user这样的前缀。例如,假设您有这样的用户和玩具模型:

代码语言:javascript
复制
class User
  # attribute: first_name, String
  # attribute: last_name, String
  has_many :toys
end

class Toy
  # attribute: name, String
end

现在,您可以对用户或用户的玩具执行搜索。下面是如何使用search_field来实现这一目的。在本例中,first_namelast_name引用用户,toys_name引用玩具的名称。

代码语言:javascript
复制
form.search_field :first_name_or_last_name_or_toys_name_cont, placeholder: "First Name, Last Name, or Toy's Name", class: 'form-control'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48274694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档