加入两个表并使用下拉选择选择记录(table2)到表格(table1)

时间:2012-06-28 11:50:23

标签: ruby-on-rails ruby-on-rails-3 join activerecord

我想加入两张桌子,我有桌子'人'和桌子'工厂'。

我的问题是,我如何添加一个人而不是选择(带下拉列表)该人所属的工厂?

我的人模特:

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

我想这样做:


|添加人员|

功能:(输入字段)

电话:(输入栏位)

移动:(输入字段)

电子邮件:(输入字段)

出厂(下拉)&lt; =这是我想要的实际字段,默认情况下不会放在人员表中。

CV :(上传字段)

提交:(提交按钮)


我希望你明白我想拥有什么,希望有人可以提供帮助。


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

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

2 个答案:

答案 0 :(得分:0)

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

@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})

答案 1 :(得分: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] })