如何通过link_to params传递来自hidden_field_tag的值(Rails)
问题描述:
我想点击一个链接并在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
我不知道我应该使用以获得隐藏变量的值是什么语法。
在此先感谢。
答
附上一个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);
}
答
一个不太突兀这样做的方法是将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代码中,理想情况下应该将它们分开。
太棒了,谢谢!我想使用.click,但没有考虑替换href中的值。我的表单不是唯一的,所以我只是添加了ID。这样,我不能使用“#####”,因为它在我使用document.getElementById时表示方式不同。我只是选择了一些其他的价值,它非常棒! – James 2014-11-04 15:16:40
很高兴我能帮忙,@詹姆斯。 – 2014-11-04 18:25:05