我是一个初学者试图使一个搜索栏,我与一个简单的属性研究,工作正常,但当我试图添加另一个属性在搜索字段,我有一个错误:“Ransack needs Product associations explicitly allowlisted as searchable. Define a ransackable_associations
class method in your Product
“,但它就在这里!!
在我的控制器下
class SearchController < ApplicationController
def index
@q = Product.ransack(params[:q])
@products2 = @q.result(distinct: true)
end
end
这个模型
class Product < ApplicationRecord
belongs_to :category
has_many :product_carts
has_many :carts, through: :product_carts
def self.ransackable_attributes(auth_object = nil)
["description", "price", "title"]
end
end
这里有两个经过测试的观点
测试的视图,这两个可以使用单个术语描述搜索
<%= search_form_for(@q, url: search_path, method: :get, class:"d-
flex") do |f| %>
<%= f.search_field :title_cont, placeholder: "recherchez dans la
description", class: "form-control me-2" %>
<%= f.submit "Ok !" %>
<% end %>
<%= search_form_for(@q, url: search_path, method: :get, class:"d-
flex") do |f| %>
<%= f.search_field :description_cont, placeholder: "recherchez dans la
description", class: "form-control me-2" %>
<%= f.submit "Ok !" %>
<% end %>
但是这个方法行不通,title和description在同一个sqlpostgre产品表中,只有两列,title是字符串,description是文本:我已经回顾了很多stackoverflow的主题,但我找不到任何明确的方式来解决这个问题!
<%= search_form_for(@q, url: search_path, method: :get, class:"d-
flex") do |f| %>
<%= f.search_field :description_or_title_cont, placeholder: "recherchez dans la
description", class: "form-control me-2" %>
<%= f.submit "Ok !" %>
<% end %>
rails error
我尝试了其他搜索与tchat gpt谁告诉我尝试这在模型中,但仍然是同样的错误
tchat gpt
提前感谢您的帮助!
1条答案
按热度按时间new9mtju1#
Hello @samuel bellotlecoq,很抱歉,但是我找不到你的方法
ransackable_associations
。我遇到了同样的问题,并且我只是想通过模型中的字段进行搜索(你的例子是Product),我在我的模型中定义了以下方法:结束
如果查看此处的代码库,您可以确定需要定义该方法。
希望我的回答能对你有所帮助。