我是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