簡體   English   中英

如何在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>

我希望每次單擊“添加挑戰”按鈕時“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 事件這樣您即使在 DOM 加載后也可以對其進行操作(例如,用於添加新元素)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM