gpt4 book ai didi

ruby-on-rails - 带有成员获取路由的 Controller 操作的 form_tag 问题

转载 作者:行者123 更新时间:2023-12-04 01:37:12 26 4
gpt4 key购买 nike

我正在制作一个 form_tag 面板,其中包含特定于 Controller 操作的信息(复选框)。这个 Action 在“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 %>

但它一直给我同样的路由错误(好像这个 Action 在 routes.rb 中根本不存在,即使它使用 link_to 而不是 form_tag submit 完美运行

这是 Controller 中 Action 的代码,它基本上发回一个文件。
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 会将其作为 cgi 参数放入 url 中。尝试将其更改为:

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 - 带有成员获取路由的 Controller 操作的 form_tag 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com