0

テーブル「人」とテーブル「工場」がある2つのテーブルに参加したいと思います。

私の質問は、人を追加して、その人が属する工場を (ドロップダウンで) 選択するにはどうすればよいですか?

私の人物モデル:

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

たとえば、やりたい:


| | 人を追加 |

機能: (入力フィールド)

電話番号: (入力欄)

モバイル: (入力フィールド)

電子メール: (入力フィールド)

工場 (ドロップダウン) <= これは、私が希望する実際のフィールドであり、デフォルトでは個人テーブルには配置されません。

CV: (アップロード欄)

送信: (送信ボタン)


私が何を望んでいるかを理解していただければ幸いです。誰かが助けてくれることを願っています。


**編集 1 計画を変更しました。選択した factory.id を person テーブルの列に入れたいと思います。

Person テーブルに factory.id という名前の列を作成しました。今度は、他のテーブルのデータをその列に格納します。これは可能ですか?**

4

2 に答える 2

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 に答える
0

Person には多くの工場があるため、ドロップダウンで工場を選択することはできません... 他の方向で行うこともできます。Factory を作成するときに、ドロップダウンで属している Person を選択できます。あなたが言ったようにしたい場合は、複数選択を有効にしてドロップダウンを作成し、コントローラーでそれを手動で処理して、次のようにすることができます。

@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 に答える