23

我在我的应用中有以下链接_删除 url

<%=link_to "Delete",blog_path(@blog.id), :method => :delete, :class => "delete", :confirm => "Are you sure ?"%>  

它似乎不起作用。当我单击此 url 时,它只是将我带到显示路径。有人可以告诉我如何解决这个问题。谢谢。

4

8 回答 8

22

你在使用 jQuery 吗?如果是这样,我认为问题可能是您使用的 jQuery 没有更新 rails.js 文件。

在此处下载 rails.js: https ://github.com/rails/jquery-ujs/raw/master/src/rails.js 将其放到您的 javascripts 目录中,覆盖 rails 默认附带的 rails.js。

添加一个 javascript 包含行以包含它。

  <%= javascript_include_tag "rails" %>

把它放在你的 Jquery 包含标签之后。如果您不打算使用原型,您可能还想取消包含 javascript 默认值。

我在我的应用程序中包含了 jQuery UI,我发现删除现在可以正常工作,但是在完成上述已解决的问题之后。

于 2010-12-20T04:40:41.890 回答
18

确保这些行出现在application.js

 //= require jquery
 //= require jquery_ujs
于 2012-08-03T10:12:59.463 回答
5

确保您已打开 java 脚本。否则:method => :delete就像在 Rails 中显示的那样。

于 2010-12-12T18:48:43.650 回答
4

如果您正在为博客使用 RESTful 路由,那么以下应该可以工作:

<%= link_to "Delete", @blog, :method => :delete, :confirm => "Are you sure ?"%>
于 2010-12-12T19:07:40.380 回答
4

您可以尝试使用 'data-method' 而不是 :method。

<%=link_to "Delete",blog_path(@blog.id), 'data-method' => :delete, :class => "delete", :confirm => "Are you sure ?"%> 

您可以在 jquery_ujs.js 上检查以下代码:

// Handles "data-method" on links such as:
// <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
于 2011-09-05T00:45:04.440 回答
3

为了link_to使用该delete方法,Rails 需要用于 jQuery 的不显眼的脚本适配器

  • 确保您的Gemfile

    gem 'jquery-rails'

  • 确保 app/assets/javascripts/ application.js

    //= require jquery
    //= require jquery_ujs

  • 确保你的 app/views/layouts/ application.html.erb

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

    head标签内。'data-turbolinks-track' => true如果您不打算使用 Turbolinks,请删除该部分。

于 2016-02-08T14:09:27.033 回答
0

你应该使用

<%=button_to "Delete",blog_path(@blog.id), :method => :delete, :class => "delete", :confirm => "Are you sure ?"%>  
于 2012-11-24T17:51:37.853 回答
0

没有 jQuery 也有可能有一个工作的 link_to

我找到了在没有 jQuery 的情况下为 ruby​​ on rails 创建有效删除链接的最佳过程!在这里我已经回答了:https ://stackoverflow.com/a/67710994/14387700

但是为了方便起见,我再次在这里写这个。

我们需要处理三件事:

  1. 在articles_controller.rb中添加destroy 方法
  2. routes.rb设置
  3. LINK_TO标记

开始吧...

在articles_controller.rb 中添加destroy 方法

首先,我们将添加def destroy ... endarticles_controller.rb让我们打开:

# app/controllers/articles_controller.rb

  def destroy
    @article = Article.find(params[:id])
    @article.destroy
    params[:id] = nil
    flash[:notice] = "Art has been deleted"
    redirect_to :action => :index
  end

这里

  1. 在第一行中,我们调用了一个变量“@article”,它将从我们的数据库中找到并选择rails 控制台上文章的ID参数。然后,
  2. 在第 2 行中,@article 变量将在控制台中执行销毁命令。然后,
  3. 在第 3 行:id 参数将被删除和
  4. 在第 4 行,应用程序页面中会闪烁一条通知“艺术已被删除”,并且还会在控制台中显示,在数据库中没有找到任何内容。
  5. 在第 5 行,销毁过程完成后,我们将被重定向到文章索引页面。

这是发出破坏命令的主要因素。并使 link_to 工作。

设置路由.rb

但是等待 我们需要 2 个用于销毁页面的路由,它们是:

  1. GET 协议设置
  2. DELETE 协议设置

在路线中只需添加:

  resources :articles, except: [:destroy] # this will add all get request links automatically except destroy link

  post '/articles/new' => 'articles#create'
  post '/articles/:id' => 'articles#update'
  post '/articles/:id/edit' => 'articles#update' # this 3 lines are needed for other forms purpose

  # we need this 2 lines for our delete link_to setup
  delete 'articles/:id/delete' => 'articles#destroy', as: 'articles_delete'
  get '/articles/:id/delete' => 'articles#destroy'
  

这里

  1. 最后第二行是声明DELETE方法,

    • 'articles/:id/delete'将是每个帖子的帖子链接标记(称为:HTML 中的锚标记)中的链接结构,
    • '=>'将链接结构指向控制器标签,即'articles#destroy'
    • 然后我们通过将**设置为:'articles_delete'**来定义路径文本,我们将在link_to标签中将其用作:'articles_delete_path'或'articles_delete_url'。

然后

  1. 在最后一行,我们定义了删除链接的获取请求,这将为我们提供一个像“https://2haas.com/articles/1/delete”这样的工作链接,除了“/articles/1/destroy”,这意味着我们可以自定义我们从这 2 种方法设置中删除链接以及更多附加信息..

最后最甜蜜的删除输出

所需的 link_to 标记

我们可以使用它来获得正确的删除link_to标记,这将起作用。

<%= link_to 'Delete Article', articles_delete_path, method: :delete %>
<%= link_to 'Delete Article', articles_delete_url, method: :delete %>

<% obj.each do |post| %>
<%= link_to 'Delete Article', articles_delete_path(post), method: :delete %>
<% end %>

并且除了jQuery之外已经完成了

感谢您正确阅读此答案。!

快乐的节目

于 2021-05-27T02:52:59.543 回答