Rails中的简单范围搜索

时间:2014-08-13 17:13:35

标签: ruby-on-rails search activerecord

我是ROR的新手,我正在尝试实施一项简单的搜索,该搜索应允许用户搜索符合特定难度范围的远足。表单已正确显示,我没有收到任何错误消息,问题是没有搜索结果。

我一直在努力解决这一问题,所以任何帮助都非常感谢!

Index.html.erb

<%= form_tag wanderungens_path, :method => 'get' do %>
<p>
<%= number_field_tag ':search[dauer_von]', @search.dauer_von %>
<%= number_field_tag ':search[dauer_bis]', @search.dauer_bis %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>

Wanderungens_controller.rb

def index
 @search = WanderungenSearch.new(params[:search])
 @wanderungens = @search.scope
end

wanderungen_search.rb

class WanderungenSearch
  attr_reader :dauer_von, :dauer_bis

def initialize(params)
  params ||= {}
  @dauer_von = params[:dauer_von]
  @dauer_bis = params[:dauer_bis]
end

def scope
    Wanderungen.where('zeitdauer BETWEEN ? AND ?', @dauer_von, @dauer_bis)
end

我遵循了本教程:https://www.youtube.com/watch?v=Ri1YNjl1_hA

我在Rails 4.0.0和Ruby 2.0.0上

更新:这是显示@Wanderungens的代码:

<table>
<thead>
<tr>
  <th>Description</th>
  <th>User</th>
  <th>Schwierigkeitsgrad</th>
  <th>Zeitdauer</th>
  <th></th>
  <th></th>
  <th></th>
</tr>
</thead>

<tbody>
<% @wanderungens.each do |wanderungen| %>
  <tr>
    <td><%= wanderungen.description %></td>
    <td><%= wanderungen.user.email if wanderungen.user %></td>
    <td><%= wanderungen.schwierigkeitsgrad.description if wanderungen.schwierigkeitsgrad %></td>
    <td><%= wanderungen.zeitdauer if wanderungen.zeitdauer %></td>
    <td><%= link_to 'Show', wanderungen %></td>
    <td><%= link_to 'Edit', edit_wanderungen_path(wanderungen) %></td>
    <td><%= link_to 'Destroy', wanderungen, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>
</tbody>
</table>

如果我从1搜索到2,则会生成以下请求:

http://localhost:3000/wanderungens?utf8=%E2%9C%93&%3Asearch[dauer_von]=1&%3Asearch[dauer_bis]=2

0 个答案:

没有答案