我建立此链接是为了销毁评论:
<%= link_to 'Destroy Comment', [comment.post, comment],
:confirm => 'Are you sure?', :method => :delete %>
这假设要发送到comments_controller中的destroy动作。
问题在于它搜索'show'动作,而不是'destroy'动作:
Unknown action
The action 'show' could not be found for CommentsController
你认为你知道为什么这样做吗?
谢谢,
乌迪德
编辑:问题解决了我使用'button_to'
答案 0 :(得分:5)
Rails 3:
使用JQuery时,请确保拥有正确的rails.js文件(https://github.com/rails/jquery-ujs)。使用Prototype时,已安装正确的rails.js文件。另外,请确保在布局头中添加以下内容:
<%= csrf_meta_tag %>
并确保正在加载JS框架和rails.js文件。
<%= javascript_include_tag "jquery", "rails" %>
# or
<%= javascript_include_tag "prototype", "rails" %>
只是旁注 - 您还可以指向Googleapis链接:http://scriptsrc.net/。
在链接中使用:method => :delete
时,将创建以下HTML:
<a href="/comments/1" data-method="delete">Click me!</a>
如您所见,正在使用HTML5数据属性。 rails.js文件自动将点击事件放在具有这些属性的链接上。设置data-method="delete"
后,将使用DELETE HTTP方法完成请求。所以点击它会破坏评论。此外,设置:confirm将创建一个数据确认属性,该属性可以满足您的期望。
Rails 2:
使用Prototype时,:method => :delete
会自动生效。只需确保包含正确的Javascript文件:
<%= javascript_include_tag :defaults %>
使用JQuery时,您应该安装&#39; jrails&#39;插件(https://github.com/aaronchi/jrails)。它允许您为JQuery使用相同的Prototype助手。该插件使用旧版本的JQuery,因此请确保更新该版本。
我不确定:method属性是否在Rails 2中使用Prototype或者只是常规Javascript。因此,您可能甚至不需要Prototype或JQuery作为Rails 2中的:method属性。
正如我在评论中所说:我从不使用button_to来进行DELETE链接。你可以轻松地使用link_to。据我所知,这是大多数人在创建这种链接时使用的帮手。希望能帮助到你。 :)
答案 1 :(得分:1)
错误:ActionController :: RoutingError(没有路由匹配[GET]“/javascripts/jquery.js”)
解决方案,下载:http://code.jquery.com/jquery-1.6.3.js
错误:AbstractController :: ActionNotFound(无法为CommentsController找到操作'show')
解决方案,下载:https://github.com/rails/jquery-ujs/raw/master/src/rails.js
在rails 3.1.0中将上面的js文件保存到app / public / javascripts / 重命名或删除现有的js文件。
答案 2 :(得分:0)
我刚刚在自己的应用程序(rails 3)中解决了这个问题。我按照rails 3的步骤操作,最重要的问题是在我的rails.js
文件夹中安装了正确的public/javascripts
文件。在我安装rails.js
后,它才能正常工作。
我选择的是这个: https://raw.github.com/rails/jquery-ujs/master/src/rails.js
答案 3 :(得分:0)
我刚刚遇到了与Rails 3相同的问题。我正在使用jQuery和更新的rails.js文件。为我修复它的原因很简单 - 使用:method =&gt; :删除,不是:method =&gt; :破坏
=link_to( 'delete account', user_admin_path(current_user.id), :confirm => "Deleting your account is irreversible!! Are you sure you wish to continue?", :method => :delete )
在标题中我有:
= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js", "jquery.colorbox-min", "jquery.validate.min", "rails"
像魅力一样工作:)
答案 4 :(得分:0)
请务必在//= require jquery
的application.js文件中引用//= require jquery_ujs
和\app\assets\javascripts
(按此顺序)。