来自不同控制器的 Ransack Search 模型属性
Ransack Search model attributes from different controller
我这里有一个 Rails 应用程序,我正在对其进行搜索。
我已经安装了 Devise,但实际上对用户索引页面没有用,相反,我有一个名为 MemberListController 的控制器,其中包含目录方法和一个链接到它的目录页面。这是我希望我的管理员用户查看成员目录的地方。 (控制器见下文)
MemberListController.rb
class MemberListController < ApplicationController
before_action :authenticate_user!
def directory
@users = User.all
@q = User.ransack(params[:q])
@user = @q.result(distinct: true)
respond_to do |format|
format.html
format.xlsx
end
end
end
我在目录页面中建立了以下搜索表单:
<%= search_form_for @q do |f| %>
<%= f.label :f_name_or_l_name_or_email_or_business_name %>
<%= f.search_field :f_name_or_l_name_or_email_or_business_name %>
<%= f.submit %>
<% end %>
当我从目录页面(我希望显示结果的地方)提交表单时,出现以下错误:
UsersController#index is missing a template for this request format and variant. request.formats: ["text/html"] request.variant: [] NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you're loading it in a web browser, we assume that you expected to actually render a template, not nothing, so we're showing an error to be extra-clear. If you expect 204 No Content, carry on. That's what you'll get from an XHR or API request. Give it a shot.
我不确定为什么我要使用用户控制器或索引操作,因为所有内容都是通过目录控制器管理的。
请帮助确定我哪里出了问题..有没有办法像 ransack 想要的那样在用户控制器的外面显示这个?
Ransack 足够聪明,可以从 ransack 搜索对象中推断出 form_url
。
因此,如果您没有将任何 url
选项传递给 ransack search_form_for
,它将提交用于为其构建 ransack 搜索表单的实体的索引操作。
因此,您必须将视图逻辑更改为以下代码-
<%= search_form_for @q, url: member_lists_path do |f| %>
<%= f.label :f_name_or_l_name_or_email_or_business_name %>
<%= f.search_field :f_name_or_l_name_or_email_or_business_name %>
<%= f.submit %>
<% end %>
Here,你可以阅读更多关于搜查的内容。
我这里有一个 Rails 应用程序,我正在对其进行搜索。
我已经安装了 Devise,但实际上对用户索引页面没有用,相反,我有一个名为 MemberListController 的控制器,其中包含目录方法和一个链接到它的目录页面。这是我希望我的管理员用户查看成员目录的地方。 (控制器见下文)
MemberListController.rb
class MemberListController < ApplicationController
before_action :authenticate_user!
def directory
@users = User.all
@q = User.ransack(params[:q])
@user = @q.result(distinct: true)
respond_to do |format|
format.html
format.xlsx
end
end
end
我在目录页面中建立了以下搜索表单:
<%= search_form_for @q do |f| %>
<%= f.label :f_name_or_l_name_or_email_or_business_name %>
<%= f.search_field :f_name_or_l_name_or_email_or_business_name %>
<%= f.submit %>
<% end %>
当我从目录页面(我希望显示结果的地方)提交表单时,出现以下错误:
UsersController#index is missing a template for this request format and variant. request.formats: ["text/html"] request.variant: [] NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you're loading it in a web browser, we assume that you expected to actually render a template, not nothing, so we're showing an error to be extra-clear. If you expect 204 No Content, carry on. That's what you'll get from an XHR or API request. Give it a shot.
我不确定为什么我要使用用户控制器或索引操作,因为所有内容都是通过目录控制器管理的。
请帮助确定我哪里出了问题..有没有办法像 ransack 想要的那样在用户控制器的外面显示这个?
Ransack 足够聪明,可以从 ransack 搜索对象中推断出 form_url
。
因此,如果您没有将任何 url
选项传递给 ransack search_form_for
,它将提交用于为其构建 ransack 搜索表单的实体的索引操作。
因此,您必须将视图逻辑更改为以下代码-
<%= search_form_for @q, url: member_lists_path do |f| %>
<%= f.label :f_name_or_l_name_or_email_or_business_name %>
<%= f.search_field :f_name_or_l_name_or_email_or_business_name %>
<%= f.submit %>
<% end %>
Here,你可以阅读更多关于搜查的内容。