如何通过link_to params(Rails)传递hidden_​​field_tag中的值

时间:2014-11-03 22:14:25

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

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

以下是一些示例代码:

= 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

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

将点击事件附加到"提交"并使用掩码作为value2:

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

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

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);
}

答案 1 :(得分:0)

较少突兀这样做的方法是将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中存储的值并用':tag_value'交换它。在generate link_to html中。

onClick方法可以被认为是不好的做法,因为它会将javascript注入生成的HTML代码中,理想情况下,这些代码应该保持独立。