Я делаю панель form_tag, которая содержит информацию (флажки), относящуюся к действию контроллера. Это действие настраивается в "rout.rb" следующим образом:
resources :students do
collection do
get :send_student_report_pdf
end
end
Эта настройка отлично работает , когда я вызываю действие по ссылке:
<%= 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 %>
Я попытался дать ему URL, путь вроде:
<%= form_tag send_student_report_pdf_students_path, :method => 'get' do %>
Но он постоянно выдавал мне ту же ошибку Route (как если бы действие не существовало вообще в route.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
Если вы видите, что я что-то здесь упускаю, пожалуйста, помогите мне.
Большое спасибо,
С уважением,