2014-11-03 59 views
2

我想点击一个链接并在simple_form中传入一个来自现有hidden_​​field_tag(在其他事件中多次更新)的值。如何通过link_to params传递来自hidden_​​field_tag的值(Rails)

下面是一些示例代码:

= 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

附上一个click事件 “提交”,并使用口罩的数值2:

=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); 
} 
+0

太棒了,谢谢!我想使用.click,但没有考虑替换href中的值。我的表单不是唯一的,所以我只是添加了ID。这样,我不能使用“#####”,因为它在我使用document.getElementById时表示方式不同。我只是选择了一些其他的价值,它非常棒! – James 2014-11-04 15:16:40

+0

很高兴我能帮忙,@詹姆斯。 – 2014-11-04 18:25:05

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()事件监听来触发的tag_value真值赋给value2:像这样的功能:

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

如果你的例子是类似的东西我曾上,你可能会注意到,通过link_to方法的`tag_value'只传递':tag_value',而不是散列本身的内容 - 所以真的,你可以在这里放任何东西。神奇的是,jQuery/javascript抓取存储在hidden_​​tag_field中的值,并在生成link_to html内使用':tag_value'替换它。

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

相关问题