如何预定义类别?

时间:2011-06-13 15:29:04

标签: ruby-on-rails

我希望我的用户能够从预定义的类别值中进行选择。我看了看其他Stackoverflow问题,但没有完全得到它们。这是我现在的代码......

我有我的分类模型和用户创建价格(这是项目的另一个名称)。

class Category < ActiveRecord::Base
    has_many :prices

    def name
        "#{category}"
    end
end

我的价格属于类别。注意:价格表有category_id。

class Price < ActiveRecord::Base
    attr_accessible :name, :date, :price

    belongs_to :user
    belongs_to :category
end

以下是表单和视图的外观:

表格

<%= form_for(@price) do |f| %>
  <div class="field">
    <%= f.label :date %><br />
    <%= f.date_select :date %>
  </div>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :price %><br />
    <%= f.text_field :price %>
  </div>
  <div class="field">
    <%= f.label :category %><br />
    <%= f.collection_select :category_id, Category.all, :id, :name, :prompt => true  %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

查看

<p><b>User:</b><%= @price.user_id %></p>  
<p><b>Date:</b><%= @price.date %> </p>
<p><b>Name:</b><%= @price.price_name %></p>
<p><b>Price:</b><%= number_to_currency(@price.price) %></p>
<p><b>Category:</b><%= @price.category.name %></p>

如何在下拉菜单中创建我想要的类别?

谢谢,我非常感激!

2 个答案:

答案 0 :(得分:2)

您可以在db / seeds.rb

中创建数据

rake db:seed加载它们(从db / seeds.rb加载种子数据)

http://railscasts.com/episodes/179-seed-data了解更多详情

答案 1 :(得分:2)

您可能需要collection_select表格帮助方法:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

看起来像这样:

<div class="category">
  <%= f.label :category %><br />
  <%= f.collection_select :category, Category.all, :id, :name %>
</div>

然后在视图中:

<p><b>Category:</b><%= @price.category.name %></p>

这假设您的categories表有一个name字段,用于存储类别名称。