0

因此,有时您只需要一个选项列表供您选择。是否有一个简单的 gem 可以很容易地使用一个表格来处理您在应用程序中可能拥有的所有类型的选项?

该表可能如下所示:

id  | type   | value  | label
01  | color  | red    | Red
02  | color  | black  | Black
03  | shape  | circle | Circle
04  | shape  | square | Square
05  | state  | texas  | Texas

例如,国家列表、州列表、颜色列表、月份列表等......

然后在使用选择时:

select_tag :color, options_for_colors

然后它会使用来自某些选项表的值/标签的选项填充选择,其中行的类型为 :color。

这很容易自己滚动,但如果它已经建成,我不想花时间。

更新

我希望这是一个动态表,因此最终用户可以从选择选项表中添加/删除项目

4

2 回答 2

1

我一直用这个方法,

应用程序/模型/user.rb

ROLES = %w[admin author normal]

应用程序/视图/用户/_form.html.erb

<%= f.collection_select :role, User::ROLES, :to_s, :titleize %>
于 2011-03-17T08:55:26.583 回答
0

从 Rails 3.2 开始,这是我在初始化程序中所做的:

ActiveRecord::Base.class_eval do
  def self.types
    Rails.application.routes.routes.select do |r|
      r.defaults[:action]=="index" && r.defaults[:controller]== self.name.to_s.downcase.pluralize
    end.map do |r|
      r.defaults[:type]
    end.compact
  end
end

在 routes.rb 中,我将 STI 操作映射到父模型的控制器,因为我精通控制器:

  resources :derived_models, :controller => :base_model, :type => "DerivedModel"
  resources :more_derived_models, :controller => :base_model, :type => "MoreDerivedModel"

现在,Model.types给你["DerivedModel", "MoreDerivedModel"]

于 2012-11-12T09:20:00.503 回答