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

答えて

0

は、私は、次の更新することでこの問題を解決するために管理しましたFriendly_id方法:

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