【问题标题】:Ransack Search model attributes from different controllerRansack 搜索来自不同控制器的模型属性
【发布时间】:2019-01-02 20:28:25
【问题描述】:

我在这里有一个 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 一样在用户控制器的外面显示这个?

【问题讨论】:

    标签: ruby-on-rails search ransack


    【解决方案1】:

    Ransack 足够聪明,可以从 ransack 搜索对象中推断出 form_url

    因此,如果您没有将任何 url 选项传递给 ransack search_form_for,它将提交构建了 ransack 搜索表单的实体的 for to index 操作。

    因此,您必须将视图逻辑更改为以下代码-

    <%= 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,你可以阅读更多关于ransack的信息。

    【讨论】:

    • 很高兴为您提供帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多