将 searchkick 与专家一起使用:policyscope 错误
Using searchkick with pundit: policyscope error
我正在尝试实现一个带有过滤选项的基本搜索引擎,但我被困在 searchkick 的实现上。
这是我的代码:
class ProductsController < ApplicationController
def index
if params[:query].present?
@products = policy_scope(Product.search(params[:query]))
else
@products = policy_scope(Product)
end
end
class Product < ApplicationRecord
searchkick
<h1>Products Index</h1>
<%= form_tag products_path, method: :get do %>
<%= text_field_tag :query,
params[:query],
class: "form-control",
placeholder: "Chercher par produit ou marque"
%>
<%= submit_tag "Rechercher", class: "btn btn-primary" %>
<% end %>
<br>
<ul>
<% @products.each do |product| %>
<li><%= link_to product.name, product_path(product) %></li>
<%= cl_image_tag product.photos.first.key, height: 550, width: 550, crop: :fill, quality: 100 %>
<% end %>
</ul>
我不知道在哪里创建 policy_scope 因为每次我尝试为搜索结果编制索引时 returns 这个错误消息:
undefined method `all' for #<Searchkick::Results:0x00007f9f117b6530> Did you mean? all?
在此先感谢您的帮助!
搜索结果必须直接在视图而不是控制器中实现!无论如何谢谢:)
试试这个
class ProductsController < ApplicationController
def index
allowed_products = policy_scope(Product)
if params[:query].present?
@products = allowed_products.search(params[:query])
else
@products = allowed_products
end
end
策略范围需要一个“普通”关系,但是 .search
return 有点太复杂了,解决方案是首先限制范围并在最后调用 .search
我正在尝试实现一个带有过滤选项的基本搜索引擎,但我被困在 searchkick 的实现上。 这是我的代码:
class ProductsController < ApplicationController
def index
if params[:query].present?
@products = policy_scope(Product.search(params[:query]))
else
@products = policy_scope(Product)
end
end
class Product < ApplicationRecord
searchkick
<h1>Products Index</h1>
<%= form_tag products_path, method: :get do %>
<%= text_field_tag :query,
params[:query],
class: "form-control",
placeholder: "Chercher par produit ou marque"
%>
<%= submit_tag "Rechercher", class: "btn btn-primary" %>
<% end %>
<br>
<ul>
<% @products.each do |product| %>
<li><%= link_to product.name, product_path(product) %></li>
<%= cl_image_tag product.photos.first.key, height: 550, width: 550, crop: :fill, quality: 100 %>
<% end %>
</ul>
我不知道在哪里创建 policy_scope 因为每次我尝试为搜索结果编制索引时 returns 这个错误消息:
undefined method `all' for #<Searchkick::Results:0x00007f9f117b6530> Did you mean? all?
在此先感谢您的帮助!
搜索结果必须直接在视图而不是控制器中实现!无论如何谢谢:)
试试这个
class ProductsController < ApplicationController
def index
allowed_products = policy_scope(Product)
if params[:query].present?
@products = allowed_products.search(params[:query])
else
@products = allowed_products
end
end
策略范围需要一个“普通”关系,但是 .search
return 有点太复杂了,解决方案是首先限制范围并在最后调用 .search