搜索窗口中的程序

时间:2011-11-19 00:31:04

标签: ruby-on-rails-3

enter image description here Ruby 1.9.1 Rails 3.1

似乎我遇到了一些小问题,但我仍然陷入困境。我正在尝试在程序的每个页面上创建搜索字段,然后在单独的页面中显示搜索结果。

我编辑了布局文件以显示搜索字段,并显示在每个页面上。这是我使用的代码:

 <%= form_tag("/find", :method => "get") do %>
  <%= label_tag(:q, "Search RF Club:") %>
  <%= text_field_tag(:search_string) %>
  <%= submit_tag("Search") %>
<% end %>

我们的想法是使用搜索字段中提供的文本作为变量,以便稍后将其传递给视图。 (因此行 - text_field_tag(:search_string))

它似乎正在工作,因为当它进入视图页面时,如果我搜索Kirk,则显示以下内容: “Kirk的客户锻炼列表” 我假设它按照描述的方式工作,因为视图文件有行

 Client workout listings for <%= params[:search_string] %>

视图文件的另一部分也可以工作并创建表头

<table>
  <tr>
    <th>Trainer</th>
    <th>Duration mins</th>
    <th>Date of workout</th>
    <th>Paid amount</th>
  </tr>

问题出现了 - 即使将“Kirk”字符串传递给页面,页面的第二部分也不起作用 - 应该实际呈现搜索查询的HTML结果的那个,它只显示空白部分。 我试图用来呈现它的代码是:

 <% for client_workout in @client_workouts %>
    <tr>
    <td><%=h client_workout.trainer %></td>
    <td><%=h client_workout.duration_mins %></td>
    <td><%=h client_workout.date_of_workout %></td>
    <td><%=h client_workout.paid_amount %></td>
    <td><%= link_to 'Show', client_workout %></td>
    <td><%= link_to 'Edit', edit_client_workout_path(client_workout) %></td>
    <td><%= link_to 'Destroy', client_workout, confirm: 'Are you sure?', method: delete %>
    </td>
    </tr>
    <% end %>
    </table>

这里有什么想法吗?


控制器

def find
      @client_workouts=ClientWorkout.find_all_by_client_name(params[:search_string])
end

Webrick Console

Started GET "/find?utf8=%E2%9C%93&search_string=Kirk&commit=Search" for 127.0.0.1 at 2011-11-18 19:19:11 -0500
  Processing by ClientWorkoutsController#find as HTML
  Parameters: {"utf8"=>"Γ£ô", "search_string"=>"Kirk", "commit"=>"Search"}
  ←[1m←[36mClientWorkout Load (1.0ms)←[0m  ←[1mSELECT "client_workouts".* FROM "client_workouts" WHERE "client_workouts"
."client_name" = 'Kirk'←[0m
Rendered client_workouts/find.html.erb within layouts/client_workouts (0.0ms)
Completed 200 OK in 90ms (Views: 78.0ms | ActiveRecord: 2.0ms)

1 个答案:

答案 0 :(得分:0)

假设您要呈现的代码位于client_workouts/find.html.erb,那么在我看来您的代码处于正常运行状态。

我的第一个猜测是你的查询根本没有返回任何结果。你能否确认你有一个或多个客户端训练,其中client_name等于柯克?

您可以通过写入Rails控制台来执行此操作:

%> rails c
rails> ClientWorkout.where(:client_name => "Kirk")

如果这确实返回了结果,那么我的下一个猜测是,用于渲染客户端训练的视图未被渲染。是否要在find.html.erb中呈现所有ERB?

最高