2015-06-21 33 views
0

我在rails中有一個link_to,我想用Jquery來更新一些數據參數。用jQuery更新link_to數據參數

<script> 
    $('#filterrific_results').find('.btn').on('click', function(){ 
    var patient_id = $(this).attr('data-patient_id'); 
    var templates = $('.modal-body').find('a'); 
    templates.attr('patient_id', patient_id); 
    }) 
</script> 

我已經試過這樣:

<%= link_to new_assessment_path(:template_id => template.id, :patient_id => "") do %> 

但代碼似乎沒有工作,因爲我加入了數據屬性href網址已經被渲染的軌道之後。

我也試過:

<%= link_to new_assessment_path, {:controller => "assessments", :action => "new", :template => template.id, :patient_id=> patient.id} do %> 

,但沒有運氣無論是。什麼是實現這一目標的最佳方式?

回答

1

其實你已經搞混了一些東西。 data屬性是具有以純html表示data-前綴的那些:

// NOTE: data-spacing, data-sowing-time are data attributes 
<li id="my_li" data-spacing="10cm" data-sowing-time="March to June">Carrots</li> 

可以得到他們的價值和使用jQuery .data()更改:

// NOTE: this made data-spacing data attribute set up to 20cm 
$('#my_li').data('spacing', "20cm") 

link_to助手不使用data屬性來設置鏈接路徑(因爲<a>標籤爲此已具有其href屬性)。所以,你最終會調用你的link_to是一樣的東西:

// link_to "New assesment", new_assessment_path(:template_id => 4) 
<a href="/assesments/new?template_id=4"> 

如果我理解正確的話,你的目的是要改變href該鏈接指向。在這種情況下,你可以通過更改href屬性實現它...

$("a").attr("href", "http://www.yourdomain.com/assesments/new?template_id=205") 

或處理您的鏈接點擊手動:

<%= link_to "New assesment", "#", :id => "new_assesment", :"data-template-id" => 4 %> 

<script> 
    $('#new_assesment').on('click', function(event){ 
    event.preventDefault(); 
    path_template = "http://yourdomain.com/assesments/new?template_id="; 
    param_id = $('#new_ass').data('template-id'); 
    window.location.href = path_template + param_id; 
}); 
</script> 

,讓你用前面提到jQuery .data()功能的機會。

+0

完美,謝謝! –

0

這是屬性使用link_to

= link_to "Test", root_path, id: "data-example", data: { hello: "World" } 

所以,如果你想設置patient_id數據屬性如何,您可以指定數據,

<%= link_to new_assessment_path(:template_id => template.id), data: { :patient_id => "" } %> 

從jQuery的,你可以對其進行更新,

templates.attr('data-patient-id', patient_id); 

請注意,data-patient-id是hyphen-分隔。