2016-06-22 50 views
0

我搜索並嘗試其他的東西,但我不明白。當我在活動頁面上時,您可以點擊「修改」或「刪除」。只有你是創建它的用戶。沒有路線匹配[刪除]「/ events」

問題:我點擊「刪除」。我得到了3次確認:「你確定嗎?」之後我點擊他們都「OK」它說:「沒有路由匹配[刪除]‘/事件’

這些按鈕‘編輯’和‘刪除’我設計工作的用戶系統:

<div class="btn-group pull-right"> 
    <% if current_user.id == @event.user.id && user_signed_in? %> 
    <%= link_to "Edit", edit_event_path, class: "btn btn-default" %> 
    <%= link_to "Delete", events_path, method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-default" %> 
    <% end %> 
</div> 

我得到了一個控制器,一個名爲「events_controller」我跟着一個教程,並使用了相同的事情,我所用的CRUD系統創建,讀取,更新,刪除:。

class EventsController < ApplicationController 
before_action :find_event, only: [:show, :edit, :update, :destroy] 

def index #index pagina 
    @event = Event.all.order("created_at DESC") 
end 

def show 
end 

def new 
@event = current_user.events.build 
end 

#CRUD actions 

def create 
@event = current_user.events.build(event_params) 
    if @event.save 
    redirect_to @event, notice: "Event created." 
    else 
    render 'new' 
end 
end 

def edit 
end 

def update #event updaten 
if @event.update(event_params) 
    redirect_to @event, notice: "Event updated." 
else 
    render 'edit' 
end 
end 

def destroy 
    @event.destroy 
    redirect_to events_path 
end 

private 
def event_params 
    params.require(:event).permit(:title, :description, :image) 
end 

def find_event 
    @event = Event.find(params[:id]) 
end 
end 

這是我的路線: https://gyazo.com/57c5b0da9a82dbcc2744e0f8262d0f8d

+0

'events_path' here here you're passing a path。你應該傳遞一個你想要刪除的對象。例如'user或@ user' – mrvncaragay

+0

@ Marv-C我想我明白了,但是應該寫一個什麼呢?因爲我說'@ event.destroy'和'redirect_to events_path' –

回答

2

event_path(NOT events_path)需要知道事件的ID,因此您需要將事件傳遞給它。

<%= link_to "Delete", event_path(@event), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-default" %> 

events_path僅適用於收集方法,不適用於對單個事件起作用的方法。並且在您的路線中沒有events_path DELETE(並且您不需要它)

+0

嗨!現在它說'沒有路由匹配[DELETE]「/events.6」' –

+0

當你在控制檯運行時,rake路由的輸出是什麼? –

+0

您是否將其從'events_path'更改爲'event_path'? – SteveTurczyn