我在rails中有一个link_to,我想用Jquery来更新一些数据参数。
<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 %>
但代码似乎不起作用,因为我已经在rails渲染了href url之后添加了data属性。
我也尝试过:
<%= link_to new_assessment_path, {:controller => "assessments", :action => "new", :template => template.id, :patient_id=> patient.id} do %>
但也没有运气。最好的方法是什么?
答案 0 :(得分:1)
实际上你已经把一些东西混淆了。 data
属性是纯data-
表示中具有html
前缀的属性:
// 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()
函数。
答案 1 :(得分: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
是连字符分隔符。