Ruby on Rails:下拉菜单

19 ruby-on-rails

我正在尝试创建一个下拉菜单,允许用户更改表格中的条目字段.用户有三个选项之一 - 热,中和冷.

我已经text_fields对其他字段做了基本相同的事情,当用户点击a时都会更新submit_tag.

有没有一种简单的方法来实现一个下拉框并将结果保存在submit_tag

谢谢,

-克里斯

Mar*_*rom 39

这是基本答案.两个元素数组的数组是关键部分.

<% form_for @entry do |f| %>
  <%= f.text_field :name %>
  <%= f.select :temperature, [['Hot','hot'],['Medium','medium'],['Cold','cold']] %>
  <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)


kik*_*ito 23

我假设有两件事:

  • 你是这个<%= form_for @model_instance成语(在本指南的第2.2节解释).
  • 您希望将"热","中"和"冷"值存储为数据库中的字符串(而不是数字1,2和3或类似的东西).

假设您有两个字段,称为:name:temperature由两个控制text_fields:

<% form_for @article do |f| %>
  <%= f.text_field :name %>
  <%= f.text_field :temperature %>
  <%= f.submit "Create" %> <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

现在您要将:温度控制更改为下拉列表,接受热,中,冷值.然后你可以这样做:

<% form_for @article do |f| %>
  <%= f.text_field :name %>
  <%= f.collection_select :temperature, Article::TEMPERATURES, :to_s, :to_s, 
       :include_blank => true
  %>
  <%= f.submit "Create" %> <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

您现在必须Article::TEMPERATURES在文章模型中定义常量.这应该不是很困难:

class Article < Activerecord::Base

  TEMPERATURES = ['hot', 'medium', 'cold']
Run Code Online (Sandbox Code Playgroud)

您可能想知道为什么我添加了:include_blank部分collection_select.这将在您的下拉列表中添加"空"选项.在创建新对象时,您将需要该空选项,除非您想要一个"默认"值到温度.