使用JQuery

时间:2015-06-21 07:21:12

标签: jquery ruby-on-rails

我在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 %>

但也没有运气。最好的方法是什么?

2 个答案:

答案 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是连字符分隔符。