在Ruby on Rails的link_to中将option_for_select值作为参数传递

时间:2018-12-05 11:08:40

标签: ruby-on-rails

<%= 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,如上所示,它不调用表单提交路径,而是调用其他路径。现在,我想在我的link_to中将下拉选择值作为参数(名为report_id)传递。不知道该怎么做。我尝试如上所述使用report_id: report_selectionreport_id: report_id,但它们都没有传递给我的控制器(无论哪种情况,该值在我的控制器中都为nil)。

如何在我的link_to调用中传递参数?请帮助!

1 个答案:

答案 0 :(得分:1)

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

<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%>