我建立此链接是为了销毁评论:
<%= link_to 'Destroy Comment', [comment.post, comment],
:confirm => 'Are you sure?', :method => :delete %>
Run Code Online (Sandbox Code Playgroud)
这假设要发送到comments_controller中的destroy动作.
问题是它搜索'show'动作,而不是'destroy'动作:
Unknown action
The action 'show' could not be found for CommentsController
Run Code Online (Sandbox Code Playgroud)
你认为你知道为什么会这样吗?
谢谢,
俄德
编辑:问题解决了我用'button_to'
Rails 3:
当您使用JQuery时,请确保您拥有正确的rails.js文件(https://github.com/rails/jquery-ujs).使用Prototype时,已安装正确的rails.js文件.另外,请确保在布局头中添加以下内容:
<%= csrf_meta_tag %>
Run Code Online (Sandbox Code Playgroud)
并确保正在加载JS框架和rails.js文件.
<%= javascript_include_tag "jquery", "rails" %>
# or
<%= javascript_include_tag "prototype", "rails" %>
Run Code Online (Sandbox Code Playgroud)
只是旁注 - 您还可以指向Googleapis链接:http://scriptsrc.net/ .
在:method => :delete链接中使用时,将创建以下HTML:
<a href="/comments/1" data-method="delete">Click me!</a>
Run Code Online (Sandbox Code Playgroud)
如您所见,正在使用HTML5数据属性.rails.js文件自动将点击事件放在具有这些属性的链接上.当data-method="delete"被设置时,该请求将与HTTP DELETE方法来完成.所以点击它会破坏评论.此外,设置:confirm将创建一个数据确认属性,它可以满足您的期望.
Rails 2:
当你使用Prototype时,这个:method => :delete东西会自动运行.只需确保包含正确的Javascript文件:
<%= javascript_include_tag :defaults %>
Run Code Online (Sandbox Code Playgroud)
使用JQuery时,您应该安装'jrails'插件(https://github.com/aaronchi/jrails).它允许您为JQuery使用相同的Prototype助手.该插件使用旧版本的JQuery,因此请确保更新该版本.
我不确定:method属性是否在Rails 2中使用Prototype或只是常规Javascript.因此,您可能甚至不需要Prototype或JQuery作为Rails 2中的:method属性.
正如我在评论中所说:我从不使用button_to来进行DELETE链接.你可以轻松地使用link_to.据我所知,这是大多数人在创建这种链接时使用的帮手.希望能帮助到你.:)
| 归档时间: |
|
| 查看次数: |
2618 次 |
| 最近记录: |