【问题标题】:How to pass values from hidden_field_tag through link_to params (Rails)如何通过 link_to 参数从 hidden_​​field_tag 传递值(Rails)
【发布时间】:2014-11-03 22:14:25
【问题描述】:

我想点击一个链接并从现有的 hidden_​​field_tag(在其他事件中多次更新)中以 simple_form 传递一个值。

这里是一些示例代码:

= hidden_field_tag :tag_value, "starting_value", id:"tag_id"
...

=link_to "Submit", controller_method_path(value1: @id, value2: **not sure what comes here but should be :tag_value**), remote: true, method: :get

我不确定应该使用什么语法来获取隐藏标签的值。

提前致谢。

【问题讨论】:

    标签: ruby-on-rails hidden-field link-to


    【解决方案1】:

    将点击事件附加到“提交”并使用掩码作为值2:

    =link_to "Submit", controller_method_path(value1: @id, value2: "#####"),onclick: "change_action()", remote: true, method: :get
    

    然后,编写javascript函数来处理点击事件:

    function change_action() {
        // If your form is unique on the page and it has no id:
        var tag_value = document.getElementById('tag_id').value;
        document.forms[0].action = document.forms[0].action.replace("#####",tag_value);
    }
    

    【讨论】:

    • 太棒了,谢谢!我想过使用 .click 但没有想到替换 href 中的值。我的表单不是唯一的,所以我只是添加了 ID。这样,我不能使用“#####”,因为当我使用 document.getElementById 时它的表示方式不同。我只是选择了一些其他的值,效果很好!
    • 很高兴我能帮上忙,@James。
    【解决方案2】:

    一个不那么突兀的方法是将tag_value分配给link_to帮助方法,在这个过程中给它一个id:

    link_to "Submit", controller_method_path(value1: @id, value2: :tag_value), 
                                                 remote: true, method: :get, :id => 'example'
    

    然后使用jQuery .click() eventListener 触发一个函数,将tag_value 的真值赋给value2:,如下所示:

    $('#example').click(function(){
      this.href = this.href + '&value2=' + $('#tag_id').val();
    });
    

    如果您的示例与我所做的类似,您可能会注意到将 `tag_value' 传递给 link_to 方法只是传递了 ':tag_value',而不是哈希本身的内容 - 所以真的,你可以放任何东西这里。神奇之处在于 jQuery/javascript 获取存储在 hidden_​​tag_field 中的值并将其与生成的 link_to html 中的 ':tag_value' 进行交换。

    onClick 方法可能被认为是不好的做法,因为它将 JavaScript 注入到您生成的 HTML 代码中,理想情况下,应该将其分开。

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 1970-01-01
      • 2016-05-31
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      相关资源
      最近更新 更多