首页 > 解决方案 > 在 Ruby on Rails 的 link_to 中将 option_for_select 值作为参数传递

问题描述

<%= form_tag form_submit_path do |f| %>

<%= select_tag(:report_id, options_for_select(
  [["Select Report Type", 0],
  ["Report 1", 1],
  ["Report 1", 1],
  ]), id: "report_selection")) %>

<%= link_to 'Generate Report', 
              NOT_form_submit_path, 
              report_id: report_selection,
              id: 'generate_report_link', 
              class: 'btn btn-small btn-primary', 
                remote: true%>

如上所示,我在表单中有一个下拉菜单。我也有一个link_to如上所示的,它不调用表单提交路径,而是使用不同的路径。现在,我想将下拉选择值作为参数(名为report_id)传递给我的 link_to。我不知道该怎么做。

我尝试使用report_id: report_selection如上所示,report_id: report_id但它们都没有传递给我的控制器(在任何一种情况下,值在我的控制器中都显示为 nil)。

如何在我的 link_to 调用中传递参数?

标签: ruby-on-rails

解决方案


请按照注释行中的说明进行操作,这可以通过更短的代码行来完成,但我只是一步一步地解释它。

<script type="text/javascript">
  //$('#report_selection').change(function(){
  $('#report_selection').on('change', function(){
    // get selected value from report_id options
    var selected_val = $(this).val(); 
    // get current path of link
    var link_url = $('#generate_report_link')[0].pathname
    // append selected value in link path and define it as new link
    var new_link_url = link_url + "?report_id=" + selected_val;
    // set new path or link
    $('#generate_report_link').attr('href', new_link_url);
  })
</script>

将链接更改为-

<%= link_to 'Generate Report', 
              NOT_form_submit_path,
              id: 'generate_report_link', 
              class: 'btn btn-small btn-primary', 
                remote: true%>

推荐阅读