我有模型User
,Event
, Rsvp
。我希望Rsvp
表单出现在我的Event
模型的show
页面中。用户可以创建许多事件,但我不需要知道哪个用户创建了哪个事件(至少我不这么认为)。用户也可以rsvp到一个事件。我的模型看起来像这样:从另一个控制器的动作调用导轨形式
user.rb
has_many :rsvps
event.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|
在我的事件/ I show.html.haml尝试呈现这样的RSVP新动作:
=render template: 'rsvps/new'
但这反而使事件/新的部分
编辑 我想我知道为什么这是渲染渲染事件新的部分。里面Rsvps/new.html.haml我有render 'form'
。我的Events文件夹中也有一个_form.html.haml。
EDIT2
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
几乎就在@jvnill。夫妇快速提问。看到我上面的EDIT2。那是否是“正确的”Rails方式重定向回到相同的事件?另外,如果表单没有被正确填写,我会在else和end之间插入什么,我想重新呈现Event的展示模板,并显示一个错误。 – mikeglaz 2013-03-20 17:49:05
没关系,想通了:渲染'events/show'。谢谢您的帮助! – mikeglaz 2013-03-20 18:26:52