如何在 fields_for 内动态增加计数器?
How to dynamically increment a counter inside fields_for?
我正在构建一个表单,人们可以在其中添加日常挑战。此表格应垂直列出一周中每一天的项目。这些天应按周 # 分组。
以这种方式:
第 1 周
- 挑战 #1
- 挑战#2
- 挑战 #3
第 2 周
- 挑战 #4
- 挑战 #5
- 挑战 #6
我使用一个按钮来动态添加项目,当这些项目也被添加时,应该会发生递增。在一周内完成 7 次每日挑战后,应在 UI.
上创建新的一周部分
我已经使用 fields_for 并尝试使用一个简单的计数器,在每次迭代中递增它。
<% i = 1 %>
<div id="challenges_container">
<%= f.fields_for :challenges do |mi| %>
<% i += 1 %>
<%= i %>
<% end %>
</div>
<p><%= f.link_to_add '<i class="fi-plus"></i> Add Challenge'.html_safe, :challenges, :data => {:target => '#challenges_container'} %></p>
我希望每次单击 'Add Challenge' 按钮时 'i' 计数器都会递增 1,但它只会在我最初加载页面时设置为“2”。
你应该看看:Rails: fields_for with index?
对于你的情况,尝试:
<% @challenges.each_with_index do |challenge, index| %>
<%= f.fields_for :challenges, challenge do |fc| %>
## Do whatever you want with challenge and index
<% end %>
<% end %>
Mark 指出的解决方案确实可以很好地在第一次加载时获取项目的索引。对于任何想让它动态工作的人,我不得不使用 Javascript。您可以在此处找到有关它的更多信息:Javascript events 这样您就可以在 DOM 加载后对其进行操作(例如,用于添加新元素)。
我正在构建一个表单,人们可以在其中添加日常挑战。此表格应垂直列出一周中每一天的项目。这些天应按周 # 分组。
以这种方式:
第 1 周
- 挑战 #1
- 挑战#2
- 挑战 #3
第 2 周
- 挑战 #4
- 挑战 #5
- 挑战 #6
我使用一个按钮来动态添加项目,当这些项目也被添加时,应该会发生递增。在一周内完成 7 次每日挑战后,应在 UI.
上创建新的一周部分我已经使用 fields_for 并尝试使用一个简单的计数器,在每次迭代中递增它。
<% i = 1 %>
<div id="challenges_container">
<%= f.fields_for :challenges do |mi| %>
<% i += 1 %>
<%= i %>
<% end %>
</div>
<p><%= f.link_to_add '<i class="fi-plus"></i> Add Challenge'.html_safe, :challenges, :data => {:target => '#challenges_container'} %></p>
我希望每次单击 'Add Challenge' 按钮时 'i' 计数器都会递增 1,但它只会在我最初加载页面时设置为“2”。
你应该看看:Rails: fields_for with index?
对于你的情况,尝试:
<% @challenges.each_with_index do |challenge, index| %>
<%= f.fields_for :challenges, challenge do |fc| %>
## Do whatever you want with challenge and index
<% end %>
<% end %>
Mark 指出的解决方案确实可以很好地在第一次加载时获取项目的索引。对于任何想让它动态工作的人,我不得不使用 Javascript。您可以在此处找到有关它的更多信息:Javascript events 这样您就可以在 DOM 加载后对其进行操作(例如,用于添加新元素)。