简体   繁体   English

Rails选择字段默认选项

[英]Rails select field default option

I'm trying to have my select fields pre-populate two select fields related to credit card expiration month/year, obviously I'm doing something wrong: 我正在尝试让我的选择字段预先填充两个与信用卡到期月份/年份相关的选择字段,显然我在做错事:

In this case, the fields should have 03 selected as the default month and 2026 as the default year. 在这种情况下,字段应选择03作为默认月份,并选择2026作为默认年份。

<div class="form-group">
  <%= label_tag "Card Expiration", nil, required: true, class: "control-label col-md-3 col-sm-3 col-xs-4" %>
     <div class="col-md-2 col-sm-2 col-xs-6">
        <%= select_tag :exp_month, options_for_select(Date::MONTHNAMES.compact.each_with_index.map { |name,i| ["#{i+1} - #{name}", i+1] }), include_blank: false, "data-stripe" => "exp-month", class: "form-control", selected: @card.exp_month %>
     </div>
     <div class="col-md-2 col-sm-2 col-xs-6">
        <%= select_tag :exp_year, options_for_select((Date.today.year..(Date.today.year+10)).to_a), selected: @card.exp_year, include_blank: false, "data-stripe" => "exp-year", class: "form-control" %>
     </div>
</div>

This is what the generated HTML looks like for month: 这是一个月生成的HTML外观:

<select class="form-control" data-stripe="exp-month" id="exp_month" name="exp_month" selected="selected"><option value="1">1 - January</option>
  <option value="2">2 - February</option>
  <option value="3">3 - March</option>
  <option value="4">4 - April</option>
  <option value="5">5 - May</option>
  <option value="6">6 - June</option>
  <option value="7">7 - July</option>
  <option value="8">8 - August</option>
  <option value="9">9 - September</option>
  <option value="10">10 - October</option>
  <option value="11">11 - November</option>
  <option value="12">12 - December</option>
</select>

This is what the generated HTML looks like for year: 这是生成的HTML年份的样子:

<select class="form-control" data-stripe="exp-year" id="exp_year" name="exp_year" selected="selected"><option value="2016">2016</option>
  <option value="2017">2017</option>
  <option value="2018">2018</option>
  <option value="2019">2019</option>
  <option value="2020">2020</option>
  <option value="2021">2021</option>
  <option value="2022">2022</option>
  <option value="2023">2023</option>
  <option value="2024">2024</option>
  <option value="2025">2025</option>
  <option value="2026">2026</option>
</select>

I've also verified that @card.exp_month = 1 and @card.exp_year = 2026 . 我还验证了@card.exp_month = 1@card.exp_year = 2026

Add the "default option" as the second arg: 添加“默认选项”作为第二个参数:

<%= select_tag :exp_year, options_for_select((Date.today.year..(Date.today.year+10)).to_a, @card.exp_year), include_blank: false, "data-stripe" => "exp-year", class: "form-control" %>

From: http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_for_select 来自: http : //api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_for_select

options_for_select([ "VISA", "MasterCard" ], "MasterCard")
# => <option value="VISA">VISA</option>
# => <option selected="selected" value="MasterCard">MasterCard</option>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM