【发布时间】:2011-07-09 21:43:57
【问题描述】:
我正在制作一个 form_tag 面板,其中包含特定于控制器操作的信息(复选框)。这个动作在“routes.rb”中设置如下:
resources :students do
collection do
get :send_student_report_pdf
end
end
当我从 link_to 调用操作时,此设置工作完美:
<%= link_to "Download PDF Report", :action => 'send_student_report_pdf', :controller => 'students'%>
但是,当我在 form_tag 中使用它时,它一直给我这个错误:
Routing Error
No route matches "/students/send_student_report_pdf"
我的form_tag 代码在这里:
<%= form_tag :controller => 'students', :action => 'send_student_report_pdf', :method => 'get' do %>
<%= label_tag "Include columns" %> <br>
<%= check_box_tag "first_name", params[:first_name], checked = true %> <%= label_tag "First Name" %><br>
<%= submit_tag "Download PDF Report", :action => 'send_student_report_pdf', :controller => 'students'%>
<% end %>
我试过给它网址,路径如下:
<%= form_tag send_student_report_pdf_students_path, :method => 'get' do %>
但它一直给我同样的 Route 错误(好像该操作在 routes.rb 中根本不存在,即使它使用 link_to 而不是 form_tag submit 完美运行
这是控制器中动作的代码,它基本上是发回一个文件。
def send_student_report_pdf
@students = search_sort_and_paginate
puts "params[:first_name] = ", params[:first_namea]
send_data(generate_pdf_report(@students), :filename => "report.pdf", :type => 'application/pdf')
end
如果您发现我在这里遗漏了什么,请帮助我。
非常感谢,
问候,
【问题讨论】:
标签: ruby-on-rails routes form-for link-to