我有模型User
,,,Event
。Rsvp
我想让一个Rsvp
表格出现在show
我的Event
模型页面中。一个用户可以创建许多事件,但我不需要知道哪个用户创建了哪个事件(至少我不认为)。用户也可以回复事件。我的模型看起来像这样:
用户.rb
has_many :rsvps
事件.rb
has_many :rsvps
rsvp.rb
belongs_to :user
belongs_to :event
我认为我的 RsvpsController 应该是这样的:
class RsvpsController < ApplicationController
def new
@user = current_user
@event = Event.find(params[:id])
@rsvp = Rsvp.new
end
end
现在在我的show
页面中,Event
我想在侧边栏中有一个表单,让Users
rsvp 到Event
. 我有这样的东西,但它不太正确。我特别不确定 form_for 的第一个参数是什么:
form_for [@user, @event, @rsvp], url: {controller: 'rsvps_controller', action: 'create' } do |f|
在我的 events/show.html.haml 中,我尝试像这样呈现 Rsvp 新动作:
=render template: 'rsvps/new'
但这反而呈现了一个事件/新的部分
编辑
我想我知道为什么这个渲染会渲染一个 Event new 部分。在 Rsvps/new.html.haml 我有render 'form'
. 我的 Events 文件夹中也有一个 _form.html.haml。
编辑2
rsvps_controller.rb
def create
@rsvp = current_user.rsvps.build(params[:rsvp])
if @rsvp.save
flash[:success] = "You have RSVPed."
redirect_to Event.find(params[:event_id])
else
end
end