布尔下拉菜单的默认空白

时间:2016-09-04 13:22:08

标签: ruby-on-rails

我正在创建一个用户可以创建公寓列表的应用程序。

该表格要求用户指定是否有代理费以及是否提供公寓。

在公寓表单部分(在创建和编辑公寓视图中呈现)中,我有两个下拉菜单用于这些布尔变量(来样和agent_fee)。

我验证模型验证中存在这些变量:

class Apartment < ActiveRecord::Base
    belongs_to :user
    validate :agent_fee_and_furnished_are_present
    def agent_fee_and_furnished_are_present
        if agent_fee.nil?
          errors.add(:agent_fee, "You must specify if there is an agent fee")
        end
        if furnished.nil?
          errors.add(:furnished, "You must specify if the apartment is furnished")
        end
    end 
end

(我创建了一个自定义验证,因此允许FALSE。如果我验证了变量的存在,FALSE将无法运行ruby的.blank测试。)

我的问题是,如何在创建和修改视图中使用的下拉列表中添加空白选项作为第一个选项?

(我想这样做,因此用户被迫选择其中一个选项,并且最终没有默认值,因为这是下拉列表中的第一个选项)

我试过了:

  <div class="field">
    <%= f.label :agent_fee, "Is there an agent fee?" %><br>
    <%= f.select :agent_fee, options_for_select([['Yes', true], ['No', false]]), {:prompt => ""} %>
  </div>

但是,当在编辑公寓视图中呈现此字段时,即使公寓的agent_fee为FALSE,也会出现空白提示。 (似乎rails执行类似的.blank?测试,只有在值为TRUE时才会覆盖提示符)

再次,我的问题是,如何在编辑视图中使用的下拉列表中包含空白选项作为第一个选项(仅当agent_fee变量为NIL且不为FALSE时才显示)< /强>

1 个答案:

答案 0 :(得分:0)

f.select电话中使用<%= f.select :agent_fee, options_for_select([['Yes', true], ['No', false]]), { :include_blank => true } %>

CREATE TABLE `Order` (
`Type` INT NULL AUTO_INCREMENT PRIMARY KEY,
 Order_Type INT NOT NULL,
 Order_Number VARCHAR(45) NOT NULL,
 Order_Date VARCHAR(45) NOT NULL
 );