0
My Appはユーザーがイベントを作成できるようにし、人々はイベントにRSVPできます。アプリはFriendly_id gemを追加する前にうまくいきました。新しいイベントを作成するまではうまくいきますが、投稿をクリックするとエラーが発生するのでRSVPは機能しません。私のコードを見て、私が紛失しているものがあるかどうかを見てください。前もって感謝します。Friendly_idを使用してネストされたルートを保存しようとすると「未定義のメソッド `slug '」5
イベントモデル
class Event < ApplicationRecord
extend FriendlyId
friendly_id :eventname, use: [:slugged, :finders]
belongs_to :user
def should_generate_new_friendly_id?
eventname_changed?
end
has_attached_file :image, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/placeholder.png"
validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
validates :eventname, presence: true
has_many :rsvps, dependent: :destroy
end'
RSVPモデル
class Rsvp < ApplicationRecord
extend FriendlyId
friendly_id :eventname, use: [:slugged, :finders]
belongs_to :event
end
イベントコントローラ
class EventsController < ApplicationController
before_filter :authenticate_user!, except: [:show]
def index
@events = current_user.events.all
end
def show
@event = Event.friendly.find(params[:id])
end
def new
@event = current_user.events.build
end
def create
@event = current_user.events.build(event_params)
@event.user = current_user
respond_to do |format|
if @event.save
format.html { redirect_to @event, notice: "Successfully created" }
else
format.html { render "new" }
end
end
end
def edit
@event = Event.friendly.find(params[:id])
end
def update
@event = Event.friendly.find(params[:id])
if @event.update(event_params)
redirect_to @event
else
render 'edit'
end
end
def destroy
@event = Event.friendly.find(params[:id])
@event.destroy
redirect_to events_path
end
private
def event_params
params.require(:event).permit(:eventname, :date, :time, :venue, :description, :image)
end
end
RSVPコントローラ
class RsvpsController < ApplicationController
def index
event = Event.friendly.find(params[:event_id])
@rsvps = event.rsvps
end
def new
event = Event.friendly.find(params[:event_id])
@rsvp = event.rsvps.friendly.build
respond_to do |format|
format.html
end
end
def create
event = Event.friendly.find(params[:event_id])
@rsvp = event.rsvps.build(rsvp_params)
respond_to do |format|
if @rsvp.save
format.html { redirect_to "/thanks" }
format.js
else
format.html { render :new }
format.js
end
end
end
def thanks
render params[:page]
end
private
def rsvp_params
params.require(:rsvp).permit(:status, :name, :message)
end
end
の
ルート
resources :events do
resources :rsvps
end
ショーイベント:
http://127.0.0.1:3000/events/birthday
イベント用にRSVPを作成します。
http://127.0.0.1:3000/events/3/rsvps/new
した後にエラーが上を示して提出:
http://127.0.0.1:3000/events/birthday/rsvps
これに
new_event_rsvp_path(event_id: @event.id)
:
class Rsvp < ApplicationRecord
belongs_to :event
end
この変更:今
new_event_rsvp_path(@event)
新しいRSVPの作成に示し3210