Rails AJAX 远程:true 与动态 id
Posted
技术标签:
【中文标题】Rails AJAX 远程:true 与动态 id【英文标题】:Rails AJAX remote: true with dynamic id 【发布时间】:2017-02-17 07:03:32 【问题描述】:我在 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?
提前致谢!
【问题讨论】:
【参考方案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")%>');
【讨论】:
以上是关于Rails AJAX 远程:true 与动态 id的主要内容,如果未能解决你的问题,请参考以下文章
文档准备好后通过 Ajax 加载的 Rails 远程表单未提交
Rails 4 使用 ajax、jquery、:remote => true 和 respond_to 渲染部分