Итак, скажем, у меня есть сообщения и комментарии, а URL для показа - /posts/1/comments/1
. Я хочу создать ссылку для удаления этого комментария в методе уничтожения контроллера комментариев. Как это сделать?
Как создать ссылку удаления для связанного объекта в Ruby on Rails?
Ответ 1
<%= link_to 'Destroy', post_comment_path(@post, comment),
data: {:confirm => 'Are you sure?'}, :method => :delete %>
в контроллере комментариев:
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
Ответ 2
Так как некоторое время назад параметр confirm
должен быть включен в хэш data
, в противном случае он будет молча игнорироваться:
<%= link_to 'Destroy', post_comment_path(@post, comment),
data: { confirm: 'Are you sure?' }, method: :delete %>
Ответ 3
Иногда, когда у вас есть <span>
, <i>
или вложенные элементы внутри тега <a>
таким образом, link_ для использования сложно. Вы можете использовать необработанный HTML-код, который легко обрабатывается, например:
<a class="btn btn-sm" href="/blogs/<%[email protected]%>" data-method="delete">
<i class="pg-trash"></i><span class="bold">Delete</span>
</a>