【发布时间】:2012-09-08 19:55:14
【问题描述】:
我有一个事件和活动。每个事件都有一个活动,用户需要从大量活动中进行选择。我有一个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>
我的无知在哪里?
【问题讨论】:
-
您能否添加有关事件和活动表的详细信息。
-
这条线是做什么的? @activity = Activity.find(params[:id]) 为什么你期望在 params 散列中有一个 id ?
标签: ruby-on-rails activerecord