0
내 앱을 사용하면 사용자가 이벤트를 만들 수 있으며 사람들은 이벤트에 대해 회신 할 수 있습니다. 응용 프로그램은 Friendly_id 보석을 추가하기 전에 잘 작동했지만 새 이벤트를 만드는 데는 효과가 있지만 제출을 클릭하면 오류가 발생하는 것처럼 회신을 보내지 않습니다. 내 코드를보고 내가 빠진 것이 있는지 확인하십시오. 미리 감사드립니다.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/birthday/rsvps
,641 :
http://127.0.0.1:3000/events/3/rsvps/new
후 오류를 제출는 보여줍니다 이것에
new_event_rsvp_path(event_id: @event.id)
:
class Rsvp < ApplicationRecord
belongs_to :event
end
이 변경 : 지금
new_event_rsvp_path(@event)
새로운 RSVP 만들기를에 보여줍니다3210