首页 > 解决方案 > 如何在 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”的值在上述控制器函数中为空。

我在这里做错了什么?请帮忙!

标签: ruby-on-railsdrop-down-menucontroller

解决方案


问题是您在这里没有使用表单。

使用 form_tag 并select_tag保留form_tag.

此外,您将不得不link_to用一个submit按钮替换。不要忘记在表单中包含以下行,以使请求以pdf格式响应。

<%= hidden_field_tag :format, :pdf %>

原因是link_to标签没有传递您的select_tag值或任何其他字段值。在这种情况下,您必须使用form它并且没有其他选择。

或者在选择选项更改时使用 JavaScript 替换idin 。url由于您正在尝试执行 show 操作,因此我认为您需要将 id 传递给path.


推荐阅读