2013-04-24 143 views
0

我已经安装了ransack,它似乎很容易使用。但是,当我点击搜索它只刷新页面,正确的数据不显示。在页面上我有搜索框列出所有注册用户名(管理员和用户)。对于搜索框我输入'管理',当我点击搜索页面重新加载,我继续看到所有注册用户(管理员和用户)。它应该仅在搜索后显示“管理员”。任何想法为什么会发生这种情况?搜索后搜索数据未显示

users_controller:

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 %> 

回答

1

你应该得到的所有结果搜索不到结果......你是压倒一切的实例变量

这:

@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” 设置了一个param?我不知道洗劫,但我认为你的表格也需要改变。

+0

我想这是用user.all的东西,当然我不能删除它。我只是不知道该怎么办。简单的修复。我不明白你是否添加了参数。将不得不研究一下,看看增加的是什么区别。 – pwz2000 2013-04-24 18:12:33

0

您将用@user = User.all覆盖搜索结果。删除该行。

您的表单可能是正确的,因为这是您使用的快速搜索构建器,并且您说它返回到当前页面。当它回到当前页面时,您是否在网址中看到http://localhost:3000/users?q= (search parameters here)