Rails AJAX remote:带动态id的true

Rails AJAX remote: true with dynamic id

本文关键字:id true 动态 AJAX remote Rails      更新时间:2023-09-26

我在Rails中实现了一个基本的AJAX调用,它可以很好地工作:

index.html.erb

<a href="/days/new" data-remote="true" id="new_day_ajax">Add This day</a>

new.js.erb

$('#new_day_ajax').hide().after('<%= j render("form")%>');

问题是,我在一个页面上生成了多达31个a-标签,就像上面的一个一样,下面的循环,表单当然总是显示在第一个,无论我点击哪个链接:

end_date.downto(start_date).each do |date|
    [...]

为了使表单显示在点击的链接上,我尝试动态地生成id,如下所示:

id="new_day_ajax_<%= date.strftime('%d') %>" <!-- i.e. new_day_ajax_07 -->

但是现在我不知道如何将这个动态id传递到new.js.erb中。我怎样才能知道javascript内部的动态id ?

提前感谢!

您可以通过GET参数从.erb视图中的params对象获取

index.html.erb

<a href="/days/new?date=<%= date.strftime('%Y-%m-%d') %>" 
    data-remote="true"
    id="new_day_ajax_<%= date.strftime('%Y-%m-%d') %>">Add This day</a>

例如:

<a href="/days/new?date=2016-10-08" 
    data-remote="true"
    id="new_day_ajax_2016-10-08">Add This day</a>

new.js.erb

$('#new_day_ajax_<%= params[:date] %>').hide().after('<%= j render("form")%>');