Ruby on rails 搜索后未显示搜索数据
我已经安装了ransack,它似乎很容易使用。但是,当我单击“搜索”时,它只是刷新页面,没有显示正确的数据。在页面上,我有一个搜索框,其中列出了所有注册用户名(管理员和用户)。对于搜索框,我输入了“admin”,当我单击搜索时,页面将重新加载,我将继续看到所有注册用户(admin和user)。它应该只在搜索后显示“admin”。你知道为什么会这样吗 用户/控制器:Ruby on rails 搜索后未显示搜索数据,ruby-on-rails,ransack,Ruby On Rails,Ransack,我已经安装了ransack,它似乎很容易使用。但是,当我单击“搜索”时,它只是刷新页面,没有显示正确的数据。在页面上,我有一个搜索框,其中列出了所有注册用户名(管理员和用户)。对于搜索框,我输入了“admin”,当我单击搜索时,页面将重新加载,我将继续看到所有注册用户(admin和user)。它应该只在搜索后显示“admin”。你知道为什么会这样吗 用户/控制器: def index @search = User.search(params[:q]) @users = @
def index
@search = User.search(params[:q])
@users = @search.result
@users = User.all
end
index.html:
<%= search_form_for @search do |f| %>
<div class="field">
<%= f.label :username_cont, "Name contains" %>
<%= f.text_field :username_cont %>
</div>
<div class="actions"><%= f.submit "Search" %></div>
<% end %>
<% @users.each do |user| %>
<li>
<%= link_to user.username, user %>
<% if current_user.admin? || current_user == @user %>
<%= link_to "Edit #{user} profile", user %>
| <%= link_to "delete", user, method: :delete,
data: { confirm: "You sure?"} %>
<% end %>
</li>
<% end %>
|
您应该获得所有结果,而不是搜索结果。。。您超越了实例变量
这:
@users = @search.result
@users = User.all
应该是:
@users = @search.result
或者更好:
@search = User.search(params[:q])
if params[:q].present?
@users = @search.result
else
@users = User.all
end
尽管如此。。。您的表单是否为“q”提交参数?我不知道ransack,但我认为您的表单也需要更改。您正在使用
@user=user.all覆盖搜索结果。删除那一行
您的表单可能还可以,因为您正在使用的是ransack builder,并且您说它会返回到当前页面。当它返回到当前页面时,您是否看到http://localhost:3000/users?q= (此处搜索参数)
在url中?我认为这是与user.all有关,当然我无法删除它。我只是不知道该怎么办。简单的修复。虽然我不明白你添加的if参数的当前部分。我们必须研究一下,看看有什么不同,这增加了什么。