【问题标题】:Rails select field default optionRails 选择字段默认选项
【发布时间】:2016-07-01 15:32:58
【问题描述】:

我正在尝试让我的选择字段预填充与信用卡到期月/年相关的两个选择字段,显然我做错了:

在这种情况下,字段应选择 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>

这是生成的 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>

这是一年生成的 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>

我还验证了@card.exp_month = 1@card.exp_year = 2026

【问题讨论】:

    标签: html ruby-on-rails ruby


    【解决方案1】:

    添加“默认选项”作为第二个参数:

    <%= 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" %>
    

    发件人: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>
    

    【讨论】:

    • 太棒了,在我意识到我所尝试的一切都是基于.select 而不是select_tag 之后,我也遇到了这个问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多