我在我的应用中有以下link_to删除网址
<%=link_to "Delete",blog_path(@blog.id), :method => :delete, :class => "delete", :confirm => "Are you sure ?"%>
它似乎不起作用。当我点击这个网址时,它只是带我去展示路径。有人请告诉我如何解决这个问题。感谢。
答案 0 :(得分:20)
您使用的是jQuery吗?如果是这样,我认为问题可能是您在没有更新的rails.js文件的情况下使用jQuery。
在这里下载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,我发现删除现在正在显示,但是在完成上面的已解决问题之后。
答案 1 :(得分:17)
确保这些行显示在application.js
:
//= require jquery
//= require jquery_ujs
答案 2 :(得分:5)
确保您已启用javascript。否则:method => :delete
就像在Rails中显示一样。
答案 3 :(得分:4)
如果您正在为博客使用restful路由,那么以下内容应该有效:
<%= link_to "Delete", @blog, :method => :delete, :confirm => "Are you sure ?"%>
答案 4 :(得分: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>
答案 5 :(得分:2)
为了link_to
使用delete
方法,Rails需要unobtrusive scripting adapter for 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
标记内。如果您不打算使用Turbolinks,请移除'data-turbolinks-track' => true
部分。
答案 6 :(得分:0)
你应该使用
<%=button_to "Delete",blog_path(@blog.id), :method => :delete, :class => "delete", :confirm => "Are you sure ?"%>
答案 7 :(得分:0)
我找到了在没有 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 之外的已经完成
感谢您正确阅读此答案。
快乐的编程