在欢迎控制器上搜索

Search on Welcome Controller

我有一个产品 (imovel) 控制器,用户可以在其中创建自己的产品 (imovels)。我正在使用设计进行身份验证,CRUD(创建、更新、删除)需要登录。因此,为了客户能够看到产品并且不需要用户,我创建了 Welcome 控制器,所以它是根。
在产品索引中,我使用 Ransack 在 table 中进行研究并且工作正常。 (对此非常高兴)。
在欢迎控制器上,我尝试做同样的事情,但是当我提交搜索时,页面被重定向到 imovels#index.

控制器:

class WelcomeController < ApplicationController
  def index
    @q = Imovel.ransack(params[:q])
    @imovel = @q.result(distinct: true)
  end
end

查看:

<div class="container text-center">
  <%= search_form_for @q do |f| %>
      # Search if the name field contains...
      <%= f.label :descricao_cont %>
      <%= f.search_field :descricao_cont %>
      <%= f.submit "Pesquisar", class: "btn btn-primary" %>
  <% end %>
</div>

在索引 (imovels#index) 中可能很重要的另一件事是在 tr 中有一个 for,信息在那里被过滤:

Imovels 指数

<tbody>
      <% @imovels.each do |imovel| %>
      <tr>
            <td><%= imovel.id %></td>
            <td><%= imovel.descricao %></td>
<% end %>

在我需要搜索的欢迎控制器中,我使用了 Divs:

欢迎指数

<% @imovels.each do |imovel| %>
  <div class="card">
    <div class="containerImovel">
      <h4><b><%= imovel.descricao %></b></h4>
      <p><%= imovel.cidade %> - <%= imovel.bairro.nome %> </p>
 </div>
  </div>
<% end %>

如何在欢迎控制器的div上进行搜索? Ransack 是更好的选择吗?可以在 has_many :through association?

中搜索

在您的 routes.rb

中为其添加路径
resources :imovel do
  collection do
    match 'search' => 'welcome#search', via: [:get, :post], as: :search
  end
end

然后向 WelcomeController 添加一个新的控制器操作

def search
  index
  render :index
end

然后像这样修改搜索表单

<%= search_form_for @q, url: search_imovel_path, html: { method: :post } do |f| %>

请务必重新检查 naming/variables,因为我对您的应用并不完全熟悉