Also sagen wir, ich habe Posts und Kommentare und die URL für die Show ist /posts/1/comments/1
. Ich möchte einen Link erstellen, um diesen Kommentar in der Kommentar-Methode destroy zu löschen. Wie mache ich das?Wie erstellt man einen Löschlink für ein verwandtes Objekt in Ruby on Rails?
Antwort
<%= link_to 'Destroy', post_comment_path(@post, comment),
data: {:confirm => 'Are you sure?'}, :method => :delete %>
in den Kommentaren Controller:
def destroy
@post = Post.find(params[:post_id])
@comment = Comment.find(params[:id])
@comment.destroy
respond_to do |format|
format.html { redirect_to post_comments_path(@post) }
format.xml { head :ok }
end
end
Seit vor einiger Zeit hat die confirm
Option in einem data
Hash enthalten sein, sonst wird es stillschweigend ignoriert:
<%= link_to 'Destroy', post_comment_path(@post, comment),
data: { confirm: 'Are you sure?' }, method: :delete %>
Manchmal Wenn Sie haben <span>
, <i>
oder verschachtelte Elemente innerhalb eines <a>
Tags auf diese Weise link_to verwenden ist diffi Kult. Sie können inseted raw HTML verwenden, die wie so einfach zu handhaben ist:
<a class="btn btn-sm" href="/blogs/<%[email protected]%>" data-method="delete">
<i class="pg-trash"></i><span class="bold">Delete</span>
</a>
In diesen Fällen können Sie ** link_to ** verwenden, indem Sie einen Block übergeben, um den Linknamen zu definieren: <% = link_to @blog, Methode:: löschen, Klasse: "btn btn-sm" do%> < i class = "pg-trash"> Löschen <% end %> –
Sie müssen auch sicher sein, dass Sie ein <% = javascript_include_tag: alle%> oder ähnlichen Tag in Ihrem Header. Ansonsten wird der Link dort sein, aber nicht respektieren die: method =>: löschen. Fügen Sie einfach diesen Kommentar, weil das war gerade stumping mich. – lacker
Kurzinfo: 'javascript_include_tag: alle 'ist in Rails> 3.1, das Anwendungslayout Standardeinstellungen mit' = javascript_include_tag "Anwendung", die das gleiche erreichen – tehfoo
Ich stieß auf ein Problem, bei dem meine AJAX-Links Benutzer protokollierten. Am Ende musste ich die CSRF-Tags in das Layout einfügen. Mehr Infos hier: http://stackoverflow.com/questions/6434283/rails-3-ajax-delete-links-log-out-current-user#comment7719982_6507424 Es ist nicht vollständig mit dieser tatsächlichen Frage verbunden, aber einige Leute können hineinlaufen das unerwartet. – Nick