我正在使用dependent-fields-rails gem来显示/隐藏窗体中的字段。大多数情况下,它的运作非常好!然而,我很难搞清楚如何定位嵌套的字段,因为dependent-fields-rails需要一个ID来定位(CSS/JS意义上的ID),而这些标识符我不知道如何预测/编码。以轨道形式定位嵌套字段的ID
例如:
用户拥有多个信用卡。我希望能够显示美国各州或加拿大省份,具体取决于用户在输入信用卡账单地址时为该字段选择的值。
<%= bootstrap_form_for(@user) do |f| %>
...user info fields...
<div>
<%= f.fields_for :credit_cards do |card| %>
<%= render 'shared_partials/credit_card_fields', f: card %>
<% end %>
<%= link_to_add_association 'Add Credit Card', f, :credit_cards, partial: 'shared_partials/credit_card_fields' %>
</div>
<%= f.submit "Save and Submit" %>
<% end %>
在信用卡部分:
<div class="nested-fields">
<%= f.text_field :card_holder_first_name, :label => "Card Holder First Name" %>
<%= f.text_field :card_holder_last_name, :label => 'Card Holder Last Name' %>
<%= f.select :card_type, ["Master Card", "American Express","VISA"] %>
<%= f.text_field :card_number, :label => 'Card Number', placeholder: 'Must be 15 or 16 digits long.' %>
<%= f.text_field :ccv, :label => 'CCV Number' %>
<%= f.date_select :expiration_date, as: :date_select, order: [:month, :year] %>
<%= f.select :country, [["USA", "USA"],["Canada","Canada"]] %>
<%= f.text_field :street_address %>
<%= f.text_field :city %>
<div class="js-dependent-fields" data-select-id='user_credit_cards_attributes_country' data-option-value='USA'>
<%= f.select :state, us_states %>
</div>
<%= f.text_field :zip %>
<%= link_to_remove_association "Remove Credit Card", f %> <br>
<hr />
</div>
这里的问题是,我无法弄清楚如何定位国家选择字段的ID。你可以看到我尝试过“user_credit_cards_attributes_country”,但这不起作用。当我查看源代码时,ID是这样的:id =“user_credit_cards_attributes_1467770518320_country” 中间的数字每次都会改变。 我知道这是因为我在fields_for上下文中执行此操作,但我不知道如何定位这种动态ID。想法?