我正在使用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集 任何帮助表示赞赏!
答案 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