【发布时间】:2018-11-05 17:09:07
【问题描述】:
我正在我的 rails 应用程序上创建高级搜索功能。我想添加一个功能,可以根据用户的姓名和性别进行搜索和过滤。为此,我添加了一个名为搜索模型的新模型,其中包含两列:用户名和性别。我从这个video 和这个link 中获得了灵感,但是极大地定制了这个功能以满足我对应用程序的需求。到目前为止,一切都顺利进行,我的意思是,作为页面的管理员,我可以成功地在不同模型的两个索引之间导航:用户模型和搜索模型。唯一的问题是我正在努力捕获我的参数(正在搜索的内容)并将其保存在控制器中,以便可以在搜索模型的索引中查看它。这是我的搜索模型索引代码:
<% provide(:title, 'All users') %>
<h1>All users</h1>
<%= will_paginate %>
<%= form_tag searches_path, method: :get do %>
<%= text_field_tag :username, params[:username] %>
<%= select_tag :gender, options_for_select(@users.collect{ |u| [u.gender] }) %>
<%= submit_tag "Search", name: nil %>
<% end %>
<ul class="users">
<%= render @users %>
</ul>
<%= will_paginate %>
这是 search_controller:
def index
@search = Search.all
end
def new
@search = Search.new(params[:username])
@search = Search.new(params[:gender])
end
def create
@search = Search.create(search_params)
redirect_to @search
end
private
def search_params
params.require(:search).permit(:users, :gender)
end
这是我的搜索模型的索引:
<h1> Your Search Results </h1>
<% if @search.nil? %>
<p> No Results Found </p>
<% else %>
<ul class="users">
<%= raise %>
<%= @search %>
</ul>
<% end %>
<p><%= link_to 'All Users', users_path %></p>
@search 在控制台中提升时为空。但正如您在下面看到的,参数已成功保存在索引页面的 URL 中:
http://localhost:3000/searches?utf8=%E2%9C%93&username=stella&gender=Female
这是video 解释我想要做什么:
任何帮助将不胜感激。
【问题讨论】:
-
不清楚!你想要什么?您想在用户搜索时保存搜索参数吗?
-
drive.google.com/file/d/1qNmMlThwr7LSgDsgtYfJzsTs-gWD9PlU/… 嘿@fool-dev 感谢您的帮助!我附上了一个视频,我在其中准确地解释了我想要做什么。
标签: ruby-on-rails ruby-on-rails-4 search