2014-11-03 69 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代碼中,理想情況下應該將它們分開。

相關問題