ID-Informationen abrufen. Ich hoffe, es wird für das Lösungsverfahren hilfreich sein, wenn die parameterbezogenen Probleme nicht funktionieren.
ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina google chrome
Diesmal bin ich also auf die Parameter-ID gestoßen Ich werde es als Memorandum schreiben.
--Posting-Funktion wurde implementiert --Versuchen Sie, die Löschfunktion zu implementieren
Wir werden diese lösen.
app/controllers/img_searchs_controller.rb
def destroy
# binding.pry
@img_searchs = current_customer.img_searchs
@img_search = @img_searchs.find_by(id: params[:id])
unless @img_search
redirect_to new_img_search_path
end
if @img_search.destroy
redirect_to request.referer
else
render :new
end
end
Schreiben und überprüfen Sie binding.pry, @img_search = @ img_searchs.find_by (id: params [: id]) wird null. Die Beschreibung selbst scheint in Ordnung zu sein, aber ich kann die ID nicht weitergeben. Wenn ich Parameter überprüfe, ist id = 'new'. (* Ich werde es später erklären, aber wenn ich dies gut bestätigen könnte, wäre die Lösung schnell) → Es besteht die Möglichkeit, dass die Beschreibung der Ansicht falsch ist.
app/views
<% @img_searchs.each do |img_search| %>
...
<%= link_to "Löschen", new_img_search_path(img_search), method: :delete %>
<% end %>
Die Variablen selbst stimmen in jeder Anweisung überein, sodass die Beschreibung keinen Fehler zu enthalten scheint. Als ich jedoch bisher die Zerstörungsmethode verwendet habe, img_search_path(img_search), method: :delete Da es so etwas nicht gab, fühlte es sich etwas seltsam an. → Überprüfen Sie das Routing.
config/routes.rb
resources :img_searchs, only: [:create, :destroy, :new]
Matching. .. .. Führen Sie für alle Fälle auch die folgenden Schritte aus.
Terminal
$ rails routes
new_img_search GET /img_searchs/new(.:format)
public/img_searchs#new
DELETE /img_searchs/:id(.:format)
public/img_searchs#destroy
Immerhin ist es geeignet. .. .. Auch wenn ich die Ansicht erneut überprüfe, ist die Beschreibung selbst immer noch korrekt. Wenn Sie jedoch den Bildschirmcursor auf den Löschlink bewegen. .. .. (In Google Chrome wird die verknüpfte URL unten links angezeigt.)
3000/img_searchs/new.15
Nicht in Form von / img_searchs /: id!
Zu diesem Zeitpunkt hatte ich keine Ahnung, warum neu aufgenommen wurde.
Ich dachte jedoch, dass das zuvor erwähnte Unbehagen behoben werden sollte.
Obwohl es keine sehr saubere Beschreibung ist, habe ich beschlossen, das Routing neu zu schreiben.
#### **`config/routes.rb`**
```rb
resources :img_searchs, only: [:create, :new]
delete 'img_searchs/:id' => 'img_searchs#destroy'
Und wenn Sie es erneut ausführen
Terminal
$ rails routes
new_img_search GET /img_searchs/new(.:format)
public/img_searchs#new
DELETE /img_searchs/:id(.:format)
public/img_searchs#destroy
Das Ergebnis war genau das gleiche. Also habe ich beschlossen, den Pfad mit as anzugeben.
config/routes.rb
resources :img_searchs, only: [:create, :new]
delete 'img_searchs/:id' => 'img_searchs#destroy', as: 'img_search'
Und wenn ich es erneut ausführe, tritt ein Fehler auf, wie unten gezeigt. Der Pfadname wurde bereits als Inhalt verwendet. Und das.
Terminal
$ rails routes
rails aborted!
ArgumentError: Invalid route name, already in use: 'img_search'
You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here:
...
Das ist blöd! Wenn ich darüber nachdenke, Ich habe als: 'img_search' in der URL einer anderen Seite verwendet. Dies ist die Ursache dieser Zeit. Ändern Sie daher den Pfadnamen wie unten gezeigt.
config/routes.rb
resources :img_searchs, only: [:create, :new]
delete 'img_searchs/:id' => 'img_searchs#destroy', as: 'img_search_destroy'
Ändern Sie dann den Ansichtspfadnamen.
app/views
<% @img_searchs.each do |img_search| %>
...
<%= link_to "Löschen", img_search_destroy_path(img_search), method: :delete %>
<% end %>
Es hat gut funktioniert.
Dieses Mal musste ich es schnell beheben, also Anstatt das vorhandene zu ändern als: 'img_search' Die neu hinzugefügte Version wurde geändert als: 'img_search' in: 'img_search_destroy'.
Ein weiterer Faktor, der diesmal passiert ist, ist Es geschah, weil ich die Priorität von Routen vergessen hatte Ich hoffe, es hilft, die Person zu beheben, die den gleichen Fehler hat.
Die Prioritätsreihenfolge von route.rb ist übrigens die oben beschriebene.
Es gibt viele Möglichkeiten, Fehler zu beheben, daher scheint es notwendig, sie Schritt für Schritt zu akkumulieren.
Recommended Posts