rails模型上的简单搜索表单查询不起作用?

时间:2014-03-28 11:13:33

标签: ruby-on-rails activerecord

我正在使用我的第一个搜索表单来查询Bboy模型。搜索字段中的输入参数是Bboy模型的名称属性。我想在下表中显示搜索结果。

这是我的搜索表单代码:

<%= form_tag( :method => "get", id: "search-form") do %>
  <%= text_field_tag :search, params[:name], placeholder: "Search Bboys" %>
  <%= submit_tag "Search", :name => nil %>
<% end %>

这在我的Bboy模型中:

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

这是SearchController.rb

class SearchController < ApplicationController
def index
@bboy = Bboy.search(params[:name])
end

end

这是在search / index.html.erb搜索结果中:

<h1> Here are your search results: </h1>

<table class="table table-striped table-hover ">
  <thead>
    <tr>
      <th>Name</th>
      <th>Crew</th>
      <th>Country</th>
      <th>Foundation</th>
      <th>Originality</th>
      <th>Dynamics</th>
      <th>Execution</th>
      <th>Battle</th>
      <th>User Votes</th>
    </tr>
  </thead>

  <tbody>
    <% @bboy.each do |bboy| %>
      <tr>
        <td><%= bboy.name %></td>
        <td><%= bboy.crew %></td>
        <td><%= bboy.country %></td>
        <td><%= rating_for bboy, "foundation" %></td>
        <td><%= rating_for bboy, "originality" %></td>
        <td><%= rating_for bboy, "dynamics" %></td>
        <td><%= rating_for bboy, "execution" %></td>
        <td><%= rating_for bboy, "battle" %></td>
        <td><%= Rate.raters_count(bboy.id) %></td>
        <td><%= link_to 'Show', bboy %></td>
        <td><%= link_to 'Edit', edit_bboy_path(bboy) %></td>
        <td><%= link_to 'Destroy', bboy, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>
<% end%>

2 个答案:

答案 0 :(得分:0)

您正在使用form_tag,因此您还需要提供网址,您的form_tag应该点击索引操作而不是创建

form_tag( :method => "get", url: searches_path , id: "search-form", )

答案 1 :(得分:0)

您的搜索表单正在text_field_tag :search中提交数据 并且在您的控制器中,您正在从params[:name]获取数据params[:search] 在控制器操作中提交表单后检查你的参数