【问题标题】:Search on Welcome Controller在欢迎控制器上搜索
【发布时间】:2023-05-07 07:34:01
【问题描述】:

我有一个产品 (ivel) 控制器,用户可以在其中创建自己的产品 (ivel)。我正在使用设计进行身份验证,CRUD(创建、更新、删除)需要登录。因此,为了让客户能够看到产品并且不需要用户,我创建了 Welcome 控制器,因此它是根。
在产品索引中,我使用 Ransack 在表格中进行研究并且工作正常。 (对此非常高兴)。
在欢迎控制器上,我尝试做同样的事情,但是当我提交搜索时,页面会重定向到 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 并且信息在那里被过滤:

Imoves 索引

<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 关联中搜索?

【问题讨论】:

  • 您应该为索引操作中的搜索和呈现产品创建不同的路径
  • 你说得对,谢谢你的评论,但我不知道该怎么做。我非常感谢您尝试帮助我。

标签: ruby-on-rails ransack


【解决方案1】:

在你的 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| %>

请务必重新检查命名/变量,因为我对您的应用并不完全熟悉

【讨论】:

  • 完美的汉斯!它按我想要的方式工作。抱歉回复的时间。成功!