【问题标题】:Search box in ruby on rails not displaying resultsruby on rails 中的搜索框不显示结果
【发布时间】:2014-06-19 16:11:57
【问题描述】:

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

【问题讨论】:

  • 请正确缩进你的代码......你应该做的最小的努力......

标签: html ruby-on-rails search


【解决方案1】:

更新index 操作如下:

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

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

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

但在您看来,您正在访问设置为@users = User.paginate(page: params[:page]) 的@users。因此,您总是在视图中看到所有用户,而不是搜索到的用户。

更新

当你使用Rails 4.0.2时,我建议你重构你的search方法如下:

def self.search(search)
  if search
    where('name LIKE ?', "%#{search}%")
  else
    all
  end
end

【讨论】:

  • 我试过这个,但我得到一个未定义的方法错误“NoMethodError in UsersController#index undefined method `paginate' for #<0xb557bb3c>
猜你喜欢
  • 1970-01-01
  • 2016-04-07
  • 2012-07-23
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多