Estoy creando un panel form_tag que contiene información (casillas de verificación) específicas para una acción del controlador. Esta acción está configurado en "routes.rb" de la siguiente manera:problemas con form_tag para la acción del controlador con members-get route
resources :students do
collection do
get :send_student_report_pdf
end
end
Esta configuración funciona perfectamente cuando llamo a la acción de un link_to:
<%= link_to "Download PDF Report", :action => 'send_student_report_pdf', :controller => 'students'%>
Sin embargo cuando lo usé en una form_tag
, que sigue mostrándome este error:
Routing Error
No route matches "/students/send_student_report_pdf"
El código form_tag
lo que tengo es aquí:
<%= 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 %>
He tratado dándole la url, camino como:
<%= form_tag send_student_report_pdf_students_path, :method => 'get' do %>
Pero ha sido constantemente me está dando el mismo error de ruta (como si la acción no existe en absoluto en routes.rb , aunque funciona perfectamente con link_to
en lugar de form_tag submit
Aquí está el código para la acción en el controlador, básicamente devuelve un archivo.
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
Si ve que me falta algo aquí, por favor ayúdeme.
Muchas gracias,
Saludos,
Wow, esto funciona increíble! Muchas gracias por su ayuda. Tengo una pregunta más pequeña sobre cómo compartir los parámetros de "form_tag" (como check_box_tag on/off, text_field_tag values) con los controladores. Intenté: <% = check_box_tag "first_name", params [: first_name], checked = true%>. Pero en el controlador cuando intenté obtener el valor de "params [: first_name], no obtuve nada. ¡Muchas gracias, sin embargo, su respuesta original realmente me ayudó!" – Dominic
Mire su registro de desarrollo. qué params se han enviado a una acción, lo que le ayudará a ver cómo necesita referenciarlo. – idlefingers
Cool. Lo descubrí agregando: value => params [: first_name] a check_box_tag. Ahora params [: first_name ] aparece en la acción del controlador. Gracias por su ayuda. – Dominic