我遇到的问题与此问题非常相似:rails 3 - link_to to destroy not working
但删除/销毁链接不起作用;我只是被重定向到对象的显示页面。当我创建一个删除按钮时,一切正常。但我想明白为什么。有谁知道吗?
我似乎与我正在使用/调用的一些.js文件有关。
<!-- This link doesn't work -->
<%= link_to('Delete', post, :confirm => 'Are you sure?', :method => :delete) %>-->
<!-- This button does work -->
<%= button_to "delete", post, :method=>:delete, :class=>:destroy, :confirm => 'Are you sure?' %>
后控制器
def destroy
@post = Post.find(params[:id])
@post.destroy
respond_to do |format|
format.html { redirect_to(posts_url) }
format.xml { head :ok }
end
端
UPDATE 在做了一些进一步的研究后,似乎其他所有有类似问题的人都包含了以下jquery库:
<script type="text/javascript" src="/javascripts/dragdrop.js"></script>
但我仍然不知道问题是什么......
LOG
Started GET "/posts/7" for 127.0.0.1 at Tue Jul 12 08:34:06 -0400 2011
Processing by PostsController#show as HTML
Parameters: {"id"=>"7"}
Post Load (0.2ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = 7 LIMIT 1
SQL (0.2ms) SELECT COUNT(*) FROM "comments" WHERE ("comments".post_id = 7)
Rendered posts/show.html.erb within layouts/application (116.5ms)
生成HTML
<a href="/posts/17" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Delete</a>
更新:我发现删除<script type="text/javascript" src="/javascripts/jquery-1.5.1.min.js"></script>
可以解决我的问题。但我不明白为什么。 jquery1.5.1和rails 3.0.7之间是否存在已知冲突?
答案 0 :(得分:3)
确保将这些内容包含在应用程序布局中:
<%= javascript_include_tag(:defaults) %>
<%= csrf_meta_tag %>
答案 1 :(得分:1)
在我的情况下添加
<%= javascript_include_tag(:defaults) %>
没用。然而,显式定义java脚本文件就是诀窍
<%= javascript_include_tag 'prototype' %>
<%= javascript_include_tag 'application' %>
还不确定原因:默认标签不起作用......
答案 2 :(得分:0)
<%= javascript_include_tag(:defaults) %>
查看app / assets / javascripts / application.js以获取告诉rails通过资产添加jquery的代码:
//= require jquery
//= require jquery_ujs
尝试通过以下行加载另一个jquery副本:
<script type="text/javascript" src="/javascripts/jquery-1.5.1.min.js"></script>
你引起了jquery实例的冲突,其影响将是不起作用。