【问题标题】:Rails select options - set first option as disabled, selectedRails 选择选项 - 将第一个选项设置为禁用,选中
【发布时间】:2016-05-06 14:53:54
【问题描述】:

我的 Rails 表单中有一个选择输入 -

<%= f.select :store_type_id, @storeType.map{ |type| [type.store_type.capitalize, type.id] }, {include_blank: 'Select store type'} %>

我怎样才能使第一个选项(“选择商店类型”)既被禁用又被选中?

我要使用的 html 等价物是

<option disabled selected>Select store type</option>

谢谢!

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

    没有办法(本机)这样做来确保跨浏览器的功能,但这里是一个的答案:

    # on store types 
    def self.options
      options = self.all.collect { |type| [type.capitalize, type.id] } 
      options.unshift(["Select Store Type", "0"])
      options
    end 
    
    # in your form 
    <%= f.select :store_type_id, options_for_select(StoreType.options, :disabled => "0") %> 
    

    但是,您依赖于浏览器来选择禁用的输入,这将自相矛盾。 Chrome latest 转到下一个未禁用的输入。

    相反,您可能需要进行一些表单验证以确保选择的值不为空。

    为了让未来的 Ruby 开发人员满意(并让自己与约定和最佳实践保持一致),请记住 Ruby 支持将变量用蛇形封装 :)

    【讨论】:

    • 酷,谢谢!不过,我明白你在说什么,我可能会尝试使用验证来处理这个问题。
    • 如果我想禁用多个选项怎么办?
    • @aldrien.h 根据api.rubyonrails.org/classes/ActionView/Helpers/…,您可以将值传递到disabled 键下的参数中,例如f.select :store_type_id, options_for_select(StoreType.options, :disabled =&gt; %w{0 1 2 3 4 5})
    【解决方案2】:

    你可以使用 disabled 并传递选项来做 disabled

    <%= f.select :field_name, options, {disabled: ['disabled_option_1', 'disabled_option_2']}, {id: "Select"} %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多