Ruby on rails 搜索后未显示搜索数据

Ruby on rails 搜索后未显示搜索数据,ruby-on-rails,ransack,Ruby On Rails,Ransack,我已经安装了ransack,它似乎很容易使用。但是,当我单击“搜索”时,它只是刷新页面,没有显示正确的数据。在页面上,我有一个搜索框,其中列出了所有注册用户名(管理员和用户)。对于搜索框,我输入了“admin”,当我单击搜索时,页面将重新加载,我将继续看到所有注册用户(admin和user)。它应该只在搜索后显示“admin”。你知道为什么会这样吗 用户/控制器: def index @search = User.search(params[:q]) @users = @

我已经安装了ransack,它似乎很容易使用。但是,当我单击“搜索”时,它只是刷新页面,没有显示正确的数据。在页面上,我有一个搜索框,其中列出了所有注册用户名(管理员和用户)。对于搜索框,我输入了“admin”,当我单击搜索时,页面将重新加载,我将继续看到所有注册用户(admin和user)。它应该只在搜索后显示“admin”。你知道为什么会这样吗

用户/控制器:

  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参数的当前部分。我们必须研究一下,看看有什么不同,这增加了什么。