我正在使用rails beta 3,我有一个名为index.html.erb的erb页面供讨论控制器使用。在该页面中,我有如下链接:
<%= link_to 'Delete', {:action=>'destroy', :id=>@discussion}, :confirm=>"Are you sure", :method=>'post' %>
应该生成删除讨论的链接,但生成的html是
<a href="/discussions/1" data-confirm="Are you sure" data-method="post" rel="nofollow">Delete</a>
始终路由到show动作。我认为href应该是/ discussion / destroy / 1。但由于某种原因,它不是。
有什么想法吗?提前谢谢。
答案 0 :(得分:1)
这是正确的href,但方法应为:delete
。您还需要确保使用新的不引人注目的javascript方式在rails 3中正确设置。您可能需要添加csrf_meta_tag
帮助程序,如此链接中所述:
http://blog.loopedstrange.com/modest-rubyist-archive/rails-3-ujs-and-csrf-meta-tags
答案 1 :(得分:0)
查看routing guide时,删除链接应该在示例中的表单中。除了该方法应该是DELETE而不是POST。但这可能是一个兼容的问题/解决方案,因为与GET和POST相比,支持DELETE方法的“更少”。
使用链接上的GET方法激活 show 操作,这显然不是查看链接的情况。
所以你确定你的路线设置正确吗?类似的东西:
map.resources :discussions
修改强>:
我刚刚看到您的link_to
代码中包含错误,:method
应设置为:delete
:
<%= link_to 'Delete', {:action=>'destroy', :id=>@discussion}, :confirm=>"Are you sure", :method=>:delete %>
此外,您可以使用类似discussion_path(@discussion_item)
的内容来生成路径(URL)。这比手动创建路径更清楚。为此,您需要上面的路径设置和包含当前(显示)页面信息的@discussion_item
变量。
所以你的link_to
行变成这样:
<%= link_to 'Delete', discussion_path(@discussion_item), :confirm=>"Are you sure", :method=>:delete %>
答案 2 :(得分:0)
您可能正在使用rails 3.1
尝试替换
<%= javascript_include_tag :defaults %>
与
<%= javascript_include_tag "application" %>