我正在尝试使用 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 %>
您还需要使用 ransack 的助手来创建表单。我最好的猜测是您使用
form_for
而不是 search_form_for
,从而得到未定义的错误。
另一种可能性是您的
User
模型没有属性 name
。
尝试将 name
添加到您的模型中,以便 ransack 知道要搜索什么。
除了接受的答案之外,您可能还需要将 name
属性列入白名单以进行搜索。 您可以通过设置模型的
self.ransackable_attributes
方法来做到这一点,如下所示:
class User < ApplicationRecord
def self.ransackable_attributes(auth_object = nil)
["id", "name"] # <-- add this
end
end