Rails 3 link_to(:method =>:delete)无效

时间:2010-12-03 03:02:56

标签: ruby-on-rails routing rails-routing

我在Rails中的动词麻烦 ......

查看资源(狗)的页面has_many(跳蚤)。嵌入在狗的show.html.haml中的是对render @dog.fleas的调用,该调用会自动(?)找到&使用“fleas / _flea.html.haml”中的模板列出与所述狗相关的每个跳蚤。

这显示正确。噢!现在,在每个跳蚤的旁边,我放了一个“杀蚤”链接到一个网址://localhost:3000/dogs/1/fleas/7。由哪个生成:

= link_to("Kill Flea", [ flea.dog, flea ], :method => :delete, :confirm => "Sure? A bunny will die")

但每次点击该链接时都没有确认...并且它会呈现跳蚤的show.html页面。好像它在/dogs/1/fleas/7上使用 GET 而不是 DELETE ?!

ps-不担心蜘蛛&机器人删除我的数据库中的东西...我只是想学习Rails ..并了解正在发生的事情

6 个答案:

答案 0 :(得分:25)

Rails 3现在使用不引人注目的javascript。在Rails 2.3中,erb会在onClick事件中将所有混乱的javascript直接推送到链接本身。现在javascript已经移出链接,并进入外部js文件。确保你的布局中有这个:

<%= javascript_include_tag :all %>

如果你有这个,可能会有更深层次的问题阻止你的javascript运行,但这是开始的地方。让我知道结果如何。

答案 1 :(得分:17)

您好,您也可以试试这个:

application.html.erb:

<%= javascript_include_tag 'jquery_ujs' %>

OR

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "jquery.rails.js" %>

答案 2 :(得分:12)

检查<%= javascript_include_tag %>

中的application.html.erb

也许你错过了“申请”js

它必须至少看起来像

<%= javascript_include_tag "application" %>

答案 3 :(得分:2)

这里我没有使用javascript_include_tag:all,:application等。 我使用自己的js文件,使用另一个自定义名称:javascript_include_tag:my_custom_file,我也有这个问题。而且我没有在文件中使用'= require jquery',但是javascript / jquery正在运行。我认为Rails默认包含jquery。我做的是改变了

link_to "Logout", destroy_user_session_path, :method => :delete 

 form_tag destroy_user_session_path, :method => :delete, :id => "logout_form" 
   link_to 'Logout', "#delete", :onclick =>  "$('#logout_form').submit();"

现在工作正常。

答案 4 :(得分:1)

检查是否是application.html.erb

<%= javascript_include_tag :application %>

不是:

<%= javascript_include_tag :default %>

答案 5 :(得分:0)

看起来你的link_to方法不太正确。请尝试使用此代码:

  <%= link_to 'Kill Flea', [flea.dog, flea], :confirm => 'Sure?', :method => :delete %>