我有模型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