【问题标题】:Adding html ID to rails select options将 html ID 添加到 rails 选择选项
【发布时间】:2014-04-02 01:16:15
【问题描述】:

我们正在使用simple_form 并尝试将id 添加到每个特定的select_tag's 选项中。这是我们的选择:

<%= f.input :category, collection: %w{ Football Basketball Golf Soccer }, :include_blank => "Choose one" %>

这是我们添加id/ids后的样子

<select class="select required form-control" id="sport_category" name="sport[category]">
  <option value="">Choose one</option>
  <option value="Football">Football</option>
  <option id="addBehavior" value="Basketball">Basketball</option>
  <option value="Golf">Golf</option>
  <option value="Soccer">Soccer</option>
</select>

但这也可以(在每个选项中添加id

<select class="select required form-control" id="sport_category" name="sport[category]">
  <option value="">Choose one</option>
  <option id="football" value="Football">Football</option>
  <option id="basketball" value="Basketball">Basketball</option>
  <option id="golf" value="Golf">Golf</option>
  <option id="soccer" value="Soccer">Soccer</option>
</select>

我们希望添加 js 行为以在选择特定 option 并计划使用 getElementById 来定位该选项时触发事件。这就是我们想要在选项中添加id 的原因。实际上只有篮球选项。

【问题讨论】:

    标签: javascript jquery ruby-on-rails simple-form


    【解决方案1】:

    尝试使用,

    <%= f.input :category, collection: %w{ Football Basketball Golf Soccer }.map { |category| [category, category, {:id => category}]}, :include_blank => "Choose one" %>
    

    当我尝试它时,它给了我 html

    <option value="">Choose one</option>
    <option id="football" value="Football">Football</option>
    <option id="basketball" value="Basketball">Basketball</option>
    <option id="golf" value="Golf">Golf</option>
    <option id="soccer" value="Soccer">Soccer</option>
    

    可能有一种更清洁的方法,但它确实有效。

    如果你也这样做,

    <%= f.input :category, collection: [["Football", "football"], ["Basketball", "basketball", {:id => "basketball"}], ["Golf", "golf"], ["Soccer", "soccer"]], :include_blank => "Choose one" %>
    

    这给了我 html,

    <option value="">Choose one</option>
    <option value="Football">Football</option>
    <option id="basketball" value="Basketball">Basketball</option>
    <option value="Golf">Golf</option>
    <option value="Soccer">Soccer</option>
    

    同样,可能有一种更清洁的方法来做到这一点!但它至少对我有用。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      你可以使用:

      <%@array = ['Football', 'Basketball', 'Golf Soccer']%>
      
      <%= f.select :category, ,options_for_select([['Choose One']] + @a.collect{|p| [p,{:id => p]}) %>
      

      希望对你有帮助:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-29
        • 2017-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-01
        • 1970-01-01
        相关资源
        最近更新 更多