2

我正在尝试使用以下内容获取 grouped_collection_select

class User
  has_many :pages, :through => pages_users
end

class Page
  has_many :users, :through => pages_users
  # name - String
  # type - String
end

class PagesUser < ActiveRecord::Base
  belongs_to :page 
  belongs_to :user
end

我希望下拉列表按类型分组,下面有名称。我在城市/国家/大陆看到的示例并没有我想要的那么有用。这样做的最佳方法是什么?我想我想要类似...

<%= grouped_collection_select(:user, :page_id, user.pages, :type, :name, ) %>

但这显然是不正确的。

有什么想法吗?

编辑以通过 pages_users 表显示实际关系。

4

2 回答 2

5

这就是我最终得到的......

<%= select_tag 'page_id', grouped_options_for_select(Page.for_select) %>

Page.for_select 看起来像...

def for_select
  {
    'Type 1'   => type1.map { |p| [p.name, p.id] },
    'Type 2' => type2.map { |p| [p.name, p.id] }
  }
end

希望这对其他人有帮助。

于 2012-06-06T16:01:27.960 回答
2

将其视为简单的一对一关系,

class User
  has_many :pages
end

class Page
  # name - String
  # type - String
end

<%= grouped_collection_select(:user, :page_id, user.pages.map(&:type), :pages_by_type, :name, :id, :name ) %>

为此,您需要一种机制来查找给定类型的所有页面。

于 2012-06-04T18:28:52.010 回答