【问题标题】:Returning search results inside of a Rails 3 app在 Rails 3 应用程序中返回搜索结果
【发布时间】:2012-02-27 11:31:41
【问题描述】:

我们关注了 Ryan Bates 的 Railscast #37,搜索表单在我们的应用程序上显示没有错误,但无法正常工作。它不返回任何搜索结果。

用户控制器:

class UsersController < ApplicationController

def index
  @title = "All users"

  @users = User.search(params[:search])
end

搜索功能在我们的 user.rb 文件中定义

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

最后是显示搜索框的 index.html.erb 文件

<h1>All users</h1>

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

【问题讨论】:

  • 您的 index.html.erb 似乎不包含任何代码来实际显示选定的@users?
  • 我们认为这就是问题所在。我们将如何根据输入到文本字段中的搜索键来显示@users
  • 使用您当前的代码,@users 将根据搜索表单提交的查询进行过滤。要在 index.html.erb 中显示结果,请参阅我之前在下面的答案中发布的代码。
  • 您是否为您的搜索编写了单元测试并验证它是否按照您认为的方式工作?
  • @onemanarmy 搜索表单现在功能齐全,经过一些调整,感谢您的帮助。

标签: ruby-on-rails ruby ruby-on-rails-3 model-view-controller search


【解决方案1】:

您是否在某个地方循环显示结果?您确实在数据库中有匹配的记录,对吗?

# create some users in the console
User.create([{:name => "Bo Jangles"}, {:name => "Some dude"}])

# somewhere in index.html.erb
<% @users.each do |user| %>
  <p><%= user.name %></p>
<% end %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2017-04-26
    • 2011-01-11
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多