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)
答案 0 :(得分:0)
假设您要呈现的代码位于client_workouts/find.html.erb
,那么在我看来您的代码处于正常运行状态。
我的第一个猜测是你的查询根本没有返回任何结果。你能否确认你有一个或多个客户端训练,其中client_name等于柯克?
您可以通过写入Rails控制台来执行此操作:
%> rails c
rails> ClientWorkout.where(:client_name => "Kirk")
如果这确实返回了结果,那么我的下一个猜测是,用于渲染客户端训练的视图未被渲染。是否要在find.html.erb中呈现所有ERB?
最高