我在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 ..并了解正在发生的事情
答案 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 %>