私はモデル、、を持ってUser
いEvent
ますRsvp
。モデルのページにRsvp
フォームを表示したいと考えています。ユーザーは多くのイベントを作成できますが、どのユーザーがどのイベントを作成したかを知る必要はありません (少なくとも私は思いません)。ユーザーは、イベントに応答することもできます。私のモデルは次のようになります。show
Event
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|
私のevents/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