2015-06-21 65 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-分隔。