我在我的应用中有以下链接_删除 url
<%=link_to "Delete",blog_path(@blog.id), :method => :delete, :class => "delete", :confirm => "Are you sure ?"%>
它似乎不起作用。当我单击此 url 时,它只是将我带到显示路径。有人可以告诉我如何解决这个问题。谢谢。
我在我的应用中有以下链接_删除 url
<%=link_to "Delete",blog_path(@blog.id), :method => :delete, :class => "delete", :confirm => "Are you sure ?"%>
它似乎不起作用。当我单击此 url 时,它只是将我带到显示路径。有人可以告诉我如何解决这个问题。谢谢。
你在使用 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,我发现删除现在可以正常工作,但是在完成上述已解决的问题之后。
确保这些行出现在application.js
:
//= require jquery
//= require jquery_ujs
确保您已打开 java 脚本。否则:method => :delete
就像在 Rails 中显示的那样。
如果您正在为博客使用 RESTful 路由,那么以下应该可以工作:
<%= link_to "Delete", @blog, :method => :delete, :confirm => "Are you sure ?"%>
您可以尝试使用 '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>
为了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,请删除该部分。
你应该使用
<%=button_to "Delete",blog_path(@blog.id), :method => :delete, :class => "delete", :confirm => "Are you sure ?"%>
我找到了在没有 jQuery 的情况下为 ruby on rails 创建有效删除链接的最佳过程!在这里我已经回答了:https ://stackoverflow.com/a/67710994/14387700
但是为了方便起见,我再次在这里写这个。
我们需要处理三件事:
开始吧...
首先,我们将添加def destroy ... end
,articles_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
这里
这是发出破坏命令的主要因素。并使 link_to 工作。
但是等待 我们需要 2 个用于销毁页面的路由,它们是:
在路线中只需添加:
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'
这里
最后第二行是声明DELETE方法,
然后
最后最甜蜜的删除输出
我们可以使用它来获得正确的删除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之外已经完成了
感谢您正确阅读此答案。!
快乐的节目