0

イベントモデルと会場モデルがあります。各イベントには1つの会場があります。ただし、会場には複数のイベントを開催できます。イベント作成プロセスの一環として、会場に関する情報を取得して保存したいと思います。現在、ネストされたフォームの設定に苦労しています。次のエラーが発生します。

ActiveRecord::UnknownAttributeError in EventsController#new
unknown attribute: event_id

イベントモデル

class Event < ActiveRecord::Base
attr_accessible :name, :budget, :user_id, :venue_id, :client, :date, :description, 
:attendees, :assets_attributes, :tag_list, :venue_attributes
belongs_to :user

has_many :assets, :dependent => :destroy
has_many :vendors
has_one :venue

accepts_nested_attributes_for :assets, :allow_destroy => true
accepts_nested_attributes_for :vendors, :allow_destroy => true
accepts_nested_attributes_for :venue, :allow_destroy => true
acts_as_taggable
end

会場モデル

class Venue < ActiveRecord::Base
attr_accessible :capacity, :city, :contact, :country, :email, :exclusiveVendors,:fee, 
:latitude, :longitude, :name, :state, :street, :tel, :union
belongs_to :event
has_many :vendors
acts_as_gmappable
has_many :events
end

イベントコントローラー

def new
  @event = Event.new
  5.times { @event.assets.build }
  venue = @event.build_venue()
  # respond_to do |format|
  #   format.html # new.html.erb
  #   format.xml  { render :xml => @event }
  # end

end

def create
  @user = current_user
  @event = Event.new(params[:event])
  @event.create_venue()

  5.times { @event.build_assets}
  if @event.save
    redirect_to @event, :notice => "Successfully created event."
  else
    render :action => 'new'
  end
end

フォーム(抜粋)

<%= f.fields_for :venue do |builder| %>

    <%= builder.label :name %><br />
    <%= builder.text_field :name %>

<% end %>
4

1 に答える 1

2

ここで関係が間違っていると思います。会場モデルにはhas_many:eventsが必要であり、イベントモデルにはbelongs_to:venueとvenue_idという名前のフィールドが必要です。

そして、イベントモデルからhas_one:venueを削除し、Venueモデルからbelongs_to:eventを削除します。

于 2012-11-18T04:29:11.540 に答える