【问题标题】:Rails AJAX remote: true with dynamic idRails AJAX 远程:true 与动态 id
【发布时间】:2023-03-30 09:35:01
【问题描述】:

我在 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-tags,并且表单当然会始终显示在第一个页面上,无论我点击哪个链接:

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?

提前致谢!

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3


    【解决方案1】:

    您可以传递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")%>');
    

    【讨论】:

      猜你喜欢
      • 2013-03-15
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多