我正在研究Ruby on Rails,我遇到了一个奇怪的bug,使用的是Rails 3.0.1和Ruby 1.8.7。使用生成的scaffold代码,当我期望调用我的“销毁”操作时,就会调用我的"Show“操作。这是代码。
routes.rb
webappdotcom::Application.routes.draw do
resources :projects
root :to => "home#index"
endindex.html.erb
<td><%= link_to 'Destroy', project, :confirm => 'Are you sure?', :method => :delete %></td>在浏览器中呈现的实际HTML代码
<td><a href="/projects/12" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a></td>单击"Destroy“链接时的服务器输出
Started GET "/projects/12" for 127.0.0.1 at Wed Oct 20 23:39:37 -0500 2010
Processing by ProjectsController#show as HTML
Parameters: {"id"=>"12"}
Project Load (0.1ms) SELECT "projects".* FROM "projects" WHERE ("projects"."id" = 12) LIMIT 1
Rendered projects/show.html.erb within layouts/application (9.0ms)
Completed 200 OK in 77ms (Views: 13.3ms | ActiveRecord: 0.1ms)您可以看到调用了"ProjectsController#show“操作,但我希望调用"Destroy”操作。另外,我注意到浏览器没有显示确认消息“你确定吗?”都不是。你知道是什么原因造成的或者我遗漏了什么吗?
非常感谢!
发布于 2010-10-21 13:01:08
这是因为Rails3改变了它在表单中使用javascript的方式。它曾经向链接添加一个onclick方法,但这与不起眼的javascript背道而驰。现在它只是设置了一些标签属性,并在另一个文件中使用javascript连接到它。
该页面的布局(可能是application.html.erb,除非您对其进行了更改)需要在标题部分包含以下行:
<%= javascript_include_tag :defaults %>如果布局中缺少这一行,这就是问题所在。另一个可能的原因是,如果您在应用程序中添加了jQuery库,而没有添加特定于rails的jQuery库。让我知道这是如何工作的。
发布于 2010-10-21 13:02:13
这可能会对你link_to with :method=>:delete not working ( Rails 3 )有所帮助。尽管在那篇文章中调用的是edit。但这个解决方案也应该适用于show。
https://stackoverflow.com/questions/3984390
复制相似问题