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

답변

0

나는 다음은 업데이트하여이 문제를 해결하기 위해 관리 Friendly_id 방법 :

http://127.0.0.1:3000/events/birthday/rsvps/new