イベントとアクティビティがあります。各イベントには 1 つのアクティビティがあり、ユーザーは多数のアクティビティから選択する必要があります。イベント フォームに正しく表示される collection_select フィールドがありますが、保存されません。エラーが発生し続けCouldn't find Activity without an ID
ます。
モデルに has_one belongs_to 関連付けを作成することで、フォームが何をすべきかを自動的に認識できるようになると考えました。いいえ。そのため、メソッドが正しいかどうかさえわからないまま、イベント コントローラーにメソッドを追加し始めました。しかし、物事は壊れませんでした。
今、おそらくフォームにローカル変数を作成する必要があると考えていますが、さまざまなバリエーションを試しましたが、何も機能しません。他のエラーメッセージが表示されるだけです。
私のイベントモデル
class Event < ActiveRecord::Base
attr_accessible :date, :activity
has_one :activity
belongs_to :creator, :class_name => "User"
has_many :attendees, :class_name => "User"
has_many :comments
end
活動モデル
class Activity < ActiveRecord::Base
attr_accessible :location, :title, :image, :image_cache
mount_uploader :image, ImageUploader
belongs_to :event
end
イベントコントローラーの一部
def new
@event = Event.new
@activities = Activity.find(:all, :order => 'title')
end
def create
@event = Event.new(params[:event])
@activities = Activity.find(:all, :order => 'title')
@activity = Activity.find(params[:id])
end
イベントフォーム
<div class="field">
<h6>When do you want to go?</h6><br />
<%= f.text_field :date %>
</div>
<h5>Activities</h5>
<%= collection_select(:activity, :event_id, Activity.all, :id, :title, {:include_blank => 'Please Select'} ) %>
<div class="actions">
<%= f.submit %>
</div>
私の無知はどこにあるのでしょうか?