2016-12-07 47 views
0

我想在我的應用程序來刪除一個事件:Rails的5 - 無法摧毀一個項目

def destroy 
    @event.destroy 
    respond_to do |format| 
     format.html { redirect_to events_url, notice: 'Event was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

(有set_event方法爲before_actiondestroy

<% @events.each do |event| %> 
    <tr> 
    <td>Due date:</td> <%= event.date %><br> 
    <td>City:</td> <%= event.city %><br> 
    <td>Address:</td > <%= event.address %><br> 
    <td>Time:</td > <%= event.time %><br> 
    <td>Capacity:</td> <%= event.capacity %><br> 
    <td>Fee:</td> <%= event.fee %><br> 
    <%= link_to 'Show', event %></td> 
    <td><%= link_to 'Edit', edit_event_path(event) %></td> 
    <td><%= link_to "Delete", event, :confirm => "Are you sure?", :method => :delete %></td> 
    </tr> 
<% end %> 

點擊在「刪除」,帶我到我的event_path,例如http://localhost:3000/events/1。它不會破壞該物品。我讀它可以與JS的東西,但我有所有的寶石和我的application.js看起來不錯。我使用Rails 5.0

+0

你在Windows系統上的工作? – dp7

+0

是的,這可能是一個問題嗎? – Jack

+0

是的,這是** Windows用戶**遇到的一個着名問題!實際發生的情況是,您的佈局application.html.erb中沒有'<%= javascript_include_tag'應用程序'%>'。理想情況下'// = require jquery_ujs'在'application.js'中是必需的,這確實有助於識別請求是「get」還是「delete」。 因此,如果您將'<%= javascript_include_tag'應用程序'%>'更改爲'<%= javascript_include_tag:default%>',那麼'jquery_ujs'不起作用!因此,'delete'請求被接受爲'get'請求&控制器將其映射到'show'動作而不是'destroy'。 – dp7

回答

1

confirm應在data屬性值的散列,試試這個

<%= link_to 'Delete', event_path(event), data: { confirm: 'Are you sure?' }, method: :delete %> 

希望幫助!

2

這是Windows用戶遇到的着名問題之一!

實際發生的是你沒有

<%= javascript_include_tag 'application' %> 

在佈局application.html.erb

理想//= require jquery_ujsapplication.js需要這的確有助於確定一個請求是getdeleteput

正如你會改變

<%= javascript_include_tag 'application' %> 

<%= javascript_include_tag :default %> 

所以jquery_ujs不起作用!

所以,作爲get請求&控制器將其映射到show動作,而不是destroy動作delete請求被接受。

0

看看你的路由是刪除方法總是隨身攜帶的object_id

您可以嘗試兩種方式:

<%= link_to 'Delete', event_path(event.id), data: { confirm: 'Are you sure?' }, method: :delete %> 

<%= link_to 'Delete', event_path(event), data: { confirm: 'Are you sure?' }, method: :delete %>