Ich benutze das Devise Juwel mit Schienen und ich habe eine Artikel-Seite mit Tasten, die mit Home
Edit
und Destroy
verknüpfen. Wenn ein Benutzer, der das Objekt nicht erstellt hat, versucht, das Objekt zu bearbeiten oder zu zerstören, erhält er eine Fehlermeldung und das Objekt wird nicht bearbeitet oder zerstört.Devise Authentifizierung nicht ausblenden Update/Destroy Buttons
Obwohl ich möchte es so, dass, wenn ein Benutzer, der nicht ein bestimmtes Element erstellt wurde angemeldet ist, können sie nicht die Schaltflächen Bearbeiten oder Löschen auf diesem Element anzeigen.
Derzeit habe ich diese if-Anweisung, die ich dachte, würde funktionieren, aber es funktioniert nur, wenn ein Benutzer überhaupt nicht angemeldet ist. Wenn jemand angemeldet ist, der das Objekt nicht erstellt hat, können die Schaltflächen zum Bearbeiten und Löschen weiterhin angezeigt werden.
show.html.erb if-Anweisung:
<%= link_to "Home", root_path, class: "btn btn-sm btn-default" %>
<% if current_user %>
<%= link_to "Edit", edit_item_path(@item), class: "btn btn-sm btn-default" %>
<%= link_to "Delete", item_path(@item), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-sm btn-default" %>
<% end %>
Und in den Artikel-Controller das sind die Eigenschaften vor:
before_action :find_item, only: [:show, :edit, :update, :destroy]
before_action :authorized_user, only: [:edit, :update, :destroy]
before_filter :authenticate_user!, except: [:index, :show]
Methode erstellen in der Steuerung:
def create
@item = current_user.items.build(items_params)
if @item.save
redirect_to @item
else
render "new"
end
end
Die Der Controller funktioniert so, wie er sollte, und verhindert Benutzer, die nicht angemeldet sind oder den Artikel nicht erstellt haben e um es zu löschen oder zu bearbeiten. Die Schaltflächen können zwar immer noch angeklickt werden, wenn ein Benutzer angemeldet ist, das Element jedoch nicht erstellt wurde.
Wer kann helfen?
Entschuldigung Ja, ich hätte die create-Methode veröffentlichen sollen. Ich habe meine Frage mit der create-Methode aktualisiert. Denkst du, du könntest deine Antwort mit diesen aktualisierten Informationen bearbeiten? –
Ich habe meine Antwort aktualisiert. Bitte guck dir das an. – retgoat
Das hat super geklappt, Kumpel –