Ransack::Search 的未定义方法“name_cont”

问题描述 投票:0回答:2

我正在尝试使用 ransank 宝石。但出于某种原因我明白了

Ransack::Search>:Ransack::Search 的未定义方法 `name_cont'

users_controller.rb

def index

    @q = User.ransack(params[:q])
    @users = @q.result
    @users = User.order(:id).includes(:employers)
    @users = User.order('last_name  ASC').page(params[:page]).per_page(2)
    #Adding CSV export
    respond_to do |format|
      format.html
      format.csv { send_data @users.to_csv }
    end
  end

我的index.html.erb

<%= f.label :name_cont %>
<%= f.search_field :name_cont %>

<%= f.submit %> <% end %>
ruby-on-rails ruby ruby-on-rails-4
2个回答
0
投票

您还需要使用 ransack 的助手来创建表单。我最好的猜测是您使用

form_for
而不是
search_form_for
,从而得到未定义的错误。

另一种可能性是您的

User
模型没有属性
name
。 尝试将
name
添加到您的模型中,以便 ransack 知道要搜索什么。


0
投票

除了接受的答案之外,您可能还需要将 name

 属性列入白名单以进行搜索

您可以通过设置模型的

self.ransackable_attributes

 方法来做到这一点,如下所示:

class User < ApplicationRecord def self.ransackable_attributes(auth_object = nil) ["id", "name"] # <-- add this end end
    
© www.soinside.com 2019 - 2024. All rights reserved.