2016-12-07 3 views
0

Ich versuche, ein Ereignis in meiner App zu löschen:Rails 5 - kann ein Element nicht zerstören

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 

(es gibt set_event Methode als before_action vor destroy)

<% @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 %> 

Ein Klick auf "Löschen", bringt mich zu meinem event_path, zB http://localhost:3000/events/1. Es zerstört den Gegenstand nicht. Ich lese es kann etwas mit JS sein, aber ich habe alle Edelsteine ​​und meine application.js sieht gut aus. Ich bin mit Rails 5,0

+0

sind Sie arbeitet an einem Windows-System? – dp7

+0

Ja, kann es ein Problem sein? – Jack

+0

ja, dieses eine der berühmten Probleme, die ** Windows-Benutzer ** rüber kommen! Was tatsächlich passiert, ist, dass Sie in Ihrem Layout 'application.html.erb' keine' <% = javascript_include_tag 'Anwendung'%> 'haben. Idealerweise ist in 'application.js' '// = require jquery_ujs' erforderlich, was in der Tat hilft zu erkennen, ob eine Anfrage 'get' oder' delete' ist. Also, wie Sie <% = javascript_include_tag '-Anwendung'%> 'in <% = javascript_include_tag: default%>' geändert hätte, so funktioniert 'jquery_ujs' nicht! Also, 'delete' Anfrage wird als' get' Anfrage akzeptiert & Controller mappt es auf 'show' Aktion anstelle von' destroy'. – dp7

Antwort

1

confirm in data Attribut Hash-Wert sein sollte, versuchen Sie diese

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

Hoffnung, das hilft!

2

Dies ist eine der berühmten Ausgabe, die Windows-Benutzer rüber kommen!

Was tatsächlich passiert ist, haben Sie nicht

<%= javascript_include_tag 'application' %> 

in Ihrem Layout application.html.erb

Idealer //= require jquery_ujs in application.js erforderlich ist, die in der Tat, ob eine Anforderung zu identifizieren hilft, ist get oder delete oder put.

Wie Sie

geändert hätte
<%= javascript_include_tag 'application' %> 

zu

<%= javascript_include_tag :default %> 

so jquery_ujs funktioniert nicht!

So wird delete Anfrage akzeptiert als get Anfrage & Controller es show Aktion Karten statt destroy Aktion.

0

Schauen Sie Ihre Routen, die Methode immer löschen trägt object_id

Sie beide Möglichkeiten ausprobieren können:

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

oder

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