2017-03-06 2 views
0

Ruby-on-Railsの既存のオブジェクト(人物タイプ)を別のテーブル(イベント)に追加する方法を理解するのが難しいです。私はテーブルの人とテーブルのイベントの間に多対多の関係を作成しましたが、今は既存の人を既存のイベントに追加する方法がわかりません。これらは私のモデルです:既存の人物をレールに追加する

パーソン:

<%= form_for([@event, @event.people.build]) do |f| %> 
    <p> 
     <%= f.label :email %><br> 
     <%= f.text_field :email %> 
    </p> 
    <p> 
     <%= f.submit %> 
    </p> 
<%end%> 

:今

class Event < ApplicationRecord 
has_many :messages 
has_and_belongs_to_many :people 

validates :title, presence: true 
validates :description, presence: true 
validates :minimum_age, presence: true 
validates :maximum_age, presence: true 
validates_numericality_of :maximum_age, :greater_than => :minimum_age 
validates :start, presence: true 
validates :end, presence: true 
end 

、私は公式のレールのチュートリアルを使用して、イベントのビューでこのフォームを作っ:イベント

class Person < ApplicationRecord 
has_many :messages 
has_and_belongs_to_many :event 

validates :name, presence: true 
validates :email, presence: true 
validates :birth, presence: true 
end 

明らかにform_for-parametersは間違っていますが、本当に何をすべきか分かりません。私は、ユーザーが自分の電子メールアドレス(既存の人物に対応する)に記入し、このイベントのアテンダントとしてユーザーを登録したいだけです。どのように私はこれを行うことができますか?

答えて

0

私はあなたの質問が少し広範であると信じていますが、私は一般的な事柄でお手伝いしようとします。あなたがしたいことがありeventpersonを追加するには

  1. は、フォームを使用して新しいpersonビューを設定します。 Railsのデフォルトの生成されたビューが行います。

  2. あなたのフォームにselect_tagヘルパーのすべての現在のリストeventsとそのIDを使用してください。

  3. 新しいpersonを作成すると、選択ボックスからeventを選択する必要があります。それを選択してフォームを送信すると、Railsはevent_id属性にpersonオブジェクトに選択したイベントのIDを格納し、DBに格納します。

  4. 強力なパラメータに必要なすべての属性が追加されていることを確認してください。

私のヒントは広く、あなたからのグーグルグーグルが必要です。しかし、あなたの現在のセットアップの詳細がなければ、それは私ができることです。

関連する問題