【问题标题】:Rails form_for select default optionRails form_for 选择默认选项
【发布时间】:2014-04-17 01:59:48
【问题描述】:

我有一个 form_for 选择从模型中定义选项的位置。我试图让它显示一个占位符选项,但不知道怎么做。

模特:

class Factoid < ActiveRecord::Base
  attr_accessible :description, :name, :title

  validates_presence_of :description, :name, :title
  validates_uniqueness_of :title


  NAMES = "Angela", "Geordie", "Jared", "Jennifer", "Kevin", "Matthew", "Oscar", "Owen", "Regina", "Todd", "Vaibhavi", "Zack"


  UNRANSACKABLE_ATTRIBUTES = ["id", "updated_at"]

  def self.ransackable_attributes auth_object = nil
    (column_names - UNRANSACKABLE_ATTRIBUTES) + _ransackers.keys
  end

end

表格:

<%= form_for @factoid, :html => { :class => 'form-horizontal' } do |f| %>
  <div class="control-group">
    <%= f.label :title, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :title, :class => 'text_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :description, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_area :description, :class => 'text_area' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :name, :class => 'control-label' %>
    <div class="controls">
      <%= f.select :name, :collection => Factoid::NAMES %>
    </div>
  </div>

  <div class="form-actions">
    <%= f.submit nil, :class => 'btn btn-primary' %>
    <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
                factoids_path, :class => 'btn' %>
  </div>
<% end %>

第二个问题是下拉菜单在其顶部显示“收藏”一词(请参见下面的屏幕截图)。我该如何阅读。理想情况下,我希望有一个带有“名称”占位符的下拉菜单,当打开下拉菜单时,它也会显示在顶部。

【问题讨论】:

  • 您希望它在什么情况下显示占位符?如果属性未定义?
  • 当您第一次访问该页面时。这是一个“新”事实。
  • 酷,只是想检查一下。我马上回答。
  • 它对你有用吗?
  • @MikeH-R 抱歉,出现了问题。我在下面回复。谢谢。

标签: ruby-on-rails form-for


【解决方案1】:

对于您的文本字段,请尝试以下内容:

<%= f.text_field :title, :class => 'text_field', value: 'my_default_value' %>

供您选择尝试:

<%= f.select :name, Factoid::NAMES %>

有关典型用法,请参见 the docs for selectthe rails guide(我认为我向您展示的方法在提交表单后不起作用,请参阅链接中的指南以获取解释,但我不确定)。

【讨论】:

  • 去掉了“集合”,但我仍然需要一个占位符来选择。
  • 阅读the docs for select,它会告诉你怎么做。
  • 为了清楚起见,解决方案是&lt;%= f.select :name, Factoid::NAMES, include_blank: 'None' %&gt;谢谢迈克!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多