problèmes avec form_tag de contrôleur de l'action avec les membres de l'-obtenir l'itinéraire
Je suis en train de faire un form_tag panneau qui contient de l'information (cases à cocher) spécifique à l'action d'un contrôleur. Cette action est mis en place dans les "routes.rb", comme suit:
resources :students do
collection do
get :send_student_report_pdf
end
end
Cette configuration œuvres parfaitement quand je l'appelle l'action d'un link_to:
<%= link_to "Download PDF Report", :action => 'send_student_report_pdf', :controller => 'students'%>
Cependant lorsque je l'ai utilisé dans form_tag
, il garde me donne cette erreur:
Routing Error
No route matches "/students/send_student_report_pdf"
La form_tag
code que j'ai est ici:
<%= 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 %>
J'ai essayé de donner l'url, le chemin d'accès comme:
<%= form_tag send_student_report_pdf_students_path, :method => 'get' do %>
Mais il a été constamment de me donner le même Itinéraire à l'erreur (comme si l'action n'existe pas du tout dans les itinéraires.rb, même s'il fonctionne parfaitement en utilisant link_to
au lieu de form_tag submit
Voici le code de l'action dans le contrôleur, il envoie en retour un fichier.
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 vous voyez que je suis absent quelque chose ici, s'il vous plaît aider moi.
Merci beaucoup,
Ce qui concerne,
OriginalL'auteur Dominic | 2011-03-06
Vous devez vous connecter pour publier un commentaire.
La
:method => 'get'
partie de votre form_for est dans le url_for_options de hachage, de ne pas les options de hachage, de sorte que les Rails être de le mettre sur l'url en tant que cgi params à la place. Essayez de la remplacer par ceci:La raison pour laquelle vous ne pouvez pas utiliser la route nommée est parce que vous n'avez pas de nom dans vos itinéraires. Si vous nommez dans votre parcours et l'utilisation de la route nommée dans votre form_tag, vous n'aurez pas besoin d'utiliser url_for...
Vous pouvez vérifier si vos routes sont comme prévu par l'exécution de
rake routes
Regarder le développement de votre journal. Je vais vous dire ce que les paramètres ont été envoyés à une action, qui vous aidera à voir comment vous auriez besoin de référence.
Cool. J'ai pensé à elle en ajoutant :valeur => params[:prenom] à la check_box_tag. Maintenant, params[:prenom] s'affiche dans l'action du contrôleur. Merci pour votre aide.
OriginalL'auteur idlefingers