0

我想加入两张桌子我有一张桌子“人”和一张桌子“工厂”。

我的问题是,我如何添加一个人,然后选择(通过下拉菜单)该人所属的工厂?

我的人物模型:

class Person < ActiveRecord::Base
  has_many :factories

  has_attached_file :cv

  attr_accessible :cv, :email, :function, :mobile, :telephone
end

我的工厂模型:

class Factory < ActiveRecord::Base
    belongs_to :persons

  attr_accessible :last_name, :email, :telephone, :first_name, :website, :country
end

例如,我想这样做:


| 添加人员 |

功能:(输入字段)

电话:(输入字段)

手机:(输入栏)

电子邮件:(输入字段)

Factory (Drop-down) <= 这是我想要的实际字段,默认情况下它不放在 person 表中。

简历:(上传字段)

提交:(提交按钮)


我希望你明白我想要什么,我希望有人能提供帮助。


**编辑 1 我改变了我的计划。我想在 person 表的列中选择 factory.id。

我在我的 Person 表中创建了一个名为 factory.id 的列,现在我想将另一个表中的数据存储在该列中。这可能吗?**

4

2 回答 2

0

您不能选择带有下拉列表的工厂,因为 Person has_many factory...您可以在另一个方向上执行此操作,当您创建工厂时,您可以使用下拉列表选择它所属的 Person_to。如果你想像你说的那样做,你可以有一个启用多选的下拉菜单,并在控制器上手动处理它,执行以下操作:

@person =  Person.create(params[:person])
params[:factories].each do |f|
  @person.factories << Factory.find(f)
end

在你看来:

select_tag("factories", options_from_collection_for_select(Factory.all, "id", "name"), {:multiple => true})
于 2012-06-28T12:10:57.670 回答
0

您可能可以这样做:

控制器:

@people=Person.new

@factories = Factory.all

看法:

    form_for @people do |a|
.
.
.
    = a.select :factory, options_for_select(@factories.map{ |f| [f.name, f.id] })
于 2012-06-28T14:38:56.167 回答