tôi sẽ giả định 2 điều:
- đó bạn là
<%= form_for @model_instance
thành ngữ (giải thích về mục 2.2 của this guide).
- Bạn muốn lưu trữ các giá trị "nóng", "trung bình" và "lạnh" dưới dạng chuỗi (không phải là số 1,2 và 3 hoặc thứ gì đó tương tự) trên cơ sở dữ liệu của bạn.
Hãy nói rằng bạn có hai lĩnh vực, gọi là :name
và :temperature
, điều khiển bởi hai text_fields
:
<% form_for @article do |f| %>
<%= f.text_field :name %>
<%= f.text_field :temperature %>
<%= f.submit "Create" %> <% end %>
<% end %>
Bây giờ bạn muốn thay đổi: kiểm soát nhiệt độ vào một danh sách thả xuống, chấp nhận nóng, trung bình và lạnh giá trị. Sau đó, bạn có thể làm điều đó theo cách này:
<% 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 %>
Bây giờ bạn sẽ phải xác định hằng số Article::TEMPERATURES
trong mô hình Bài viết của mình. Nó không phải là rất khó khăn:
class Article < Activerecord::Base
TEMPERATURES = ['hot', 'medium', 'cold']
Bạn có thể tự hỏi tại sao tôi thêm :include_blank
phần trên collection_select
. Thao tác này sẽ thêm tùy chọn "trống" vào danh sách thả xuống của bạn. Bạn sẽ cần tùy chọn trống đó khi tạo đối tượng mới, trừ khi bạn muốn có giá trị "mặc định" cho nhiệt độ.