ruby-on-rails - 如何在 ruby on rails 中使用 options_for_select 中选择的选项
问题描述
我的 Rails 应用程序中有这个下拉列表:
<%= select_tag(:report_id, options_for_select([["Summary1", 7], ["Summary2", 6]])) %>
用户从上面的下拉列表中选择一个值,然后单击下面显示的按钮以生成 PDF:
<%= link_to 'Generate', pdf_path(format: :pdf, report: :report_id), class: 'btn btn-primary' %>
这是我的控制器函数,当单击上面的按钮时会调用它:
def show
init_report_data
respond_to do |format, report|
format.html
format.pdf do
puts "***************** report id" + report.to_s + "*************************"
case report
when 7
report_name = 'summary1'
when 6
report_name = 'summary2'
end
render pdf: "Forecast Report",
template: "forecast/" + report_name + ".html.erb",
disposition: "attachment",
:page_width => '18in',
:page_height => '15in'
end
end
end
控制器函数被正常调用,但参数“report”的值在上述控制器函数中为空。
我在这里做错了什么?请帮忙!
解决方案
问题是您在这里没有使用表单。
使用 form_tag 并select_tag
保留form_tag
.
此外,您将不得不link_to
用一个submit
按钮替换。不要忘记在表单中包含以下行,以使请求以pdf
格式响应。
<%= hidden_field_tag :format, :pdf %>
原因是link_to
标签没有传递您的select_tag
值或任何其他字段值。在这种情况下,您必须使用form
它并且没有其他选择。
或者在选择选项更改时使用 JavaScript 替换id
in 。url
由于您正在尝试执行 show 操作,因此我认为您需要将 id 传递给path
.
推荐阅读
- r - 在 R 的函数中使用 RLE
- symfony - 在没有 SonataUserBundle 的情况下构建后台
- css - 固定容器工作不良的覆盖属性
- php - Slim 框架:如何打破循环依赖注入?
- c++ - Boost Asio 异步操作调试断言问题
- python-3.x - 在 Django 3/Python 中,删除孤立记录的首选方法是什么?
- flutter - 在颤动中从 TextFormField 添加多个值
- java - 如何在java中制作通用ADT?
- node.js - 在 node:alpine 映像的 docker 中使用 docker
- html - CSS在对齐文本时考虑改变大小的动画