Rails 3.1下拉菜单和多个数据

时间:2012-03-12 10:04:51

标签: ruby-on-rails

它可以创建一个下拉菜单,其中菜单的字段是来自几个mysql表的数据?我解释得更好:假设我有两个模型"硬件"和"品牌"并假设:

class Hardware < ActiveRecord::Base
belongs_to :brand
end

class Brand < ActiveRecord::Base
has_many :hardwares
end

并假设硬件迁移是:

class Hardwares < ActiveRecord::Migration

def self.up
  create_table "hardwares" do |t|
    t.column "model", :string
    t.column "id", :integer
     t.column "brand_id", :integer
  end
end

def self.down
  drop_table "hardwares"
end

我希望每个下拉菜单元素都是这样的:

@hw=Hardwares.find(params[:id])

[@hw.brand.name,@hw.model]   <- Dropdown menu's element

以女巫的方式,我可以这样做吗? 提前谢谢大家

1 个答案:

答案 0 :(得分:1)

据我了解,您希望将硬件与项目相关联,但在列出硬件时,您希望包含品牌名称以避免使用型号列表。

更新:在硬件模型中定义以下内容:

def model_with_brand_name
  "#{self.brand.name} #{self.model}"
end

不幸的是,Rails API文档不允许直接链接到方法,但你想要的是collection_select。

在表单中,您可以使用以下方法创建选择元素菜单:

<%= collection_select :project_id, Hardware.all, :id, :model_with_brand_name %>

这将提供一个包含所有品牌名称的下拉菜单,允许您为硬件选择正确的品牌名称。