在轨道上的红宝石中的搜索框不显示结果

时间:2014-05-02 21:28:10

标签: html ruby-on-rails search

我正在使用Ruby on Rails,试图让我的搜索栏显示结果。我已经尝试过搜索类似的问题,但大多数搜索工作已经开始,并且没有让它正常工作。

在我的HTML中我有:

<%= form_tag users_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>
  </p>
<% end %>

<div class="scrollBox">
  <%= will_paginate%>       
  <ul>
    <% @users.each do |user| %>
      <li>
        <%= link_to user.name, user, {:class=>"signout-style"} %>
      </li>
    <% end %>
  </ul>
 <%= will_paginate %>
</div>

在我的用户控制器中,我有:

  def index
    @users = User.paginate(page: params[:page])
    @searches = User.search(params[:search])
  end

在我的用户模型中,我有:

 def self.search(search)
   if search
     find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
   else
     find(:all)
   end
 end

我正在使用railscast第37集 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

更新index操作,如下所示:

def index
  @users = User.search(params[:search]).paginate(page: params[:page])
end

目前,您使用以下行将搜索结果存储在实例变量@searches中:

@searches = User.search(params[:search])

但是在您看来,您正在访问设为@users的{​​{1}}。因此,您始终会在视图中看到所有用户,而不是搜索到的用户

<强>更新

当您使用@users = User.paginate(page: params[:page])时,我建议您重构Rails 4.0.2方法,如下所示:

search