用的form_tag与会员-GET路由控制器行动问题

我在做包含特定于一个控制器动作信息(复选框)一个的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 %>

我试图给它的URL路径,如:

<%= form_tag send_student_report_pdf_students_path, :method => 'get' do %>

但是,一贯给我同样的路线错误(好像动作不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

如果你看到我在这里失去了一些东西,请帮助我。

非常感谢你,

问候,

--------------解决方案-------------

:method => 'get'在你的form_for部分是在url_for_options哈希值,而不是选择哈希,所以Rails会被把它到URL作为CGI PARAMS代替。 试着将其更改为这样:

form_tag url_for(:controller => 'students', :action => 'send_student_report_pdf'), :method => 'get' do ...

你不能使用命名的路由的原因是因为你没有在你的路线命名。 如果你在你的路线命名,并使用您的form_tag指定的路线,你会不会需要使用url_for ...

resources :students do
collection do
get :send_student_report_pdf, :as => :send_student_report_pdf
end
end

您可以检查您的路由是否按预期运行rake routes

分类:Ruby on Rails的 时间:2012-08-05 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.707 (s). 9 q(s)