我已在 routes.rb
中定义了资源resources :cars
在我的视图(index.html.haml)中,我定义了一个删除一个项目的链接:
%td
=link_to(t("delete"), car_post_path(car))
我得到了NoMethodError: 未定义的方法`car_post_path'
为什么呢? (我正在使用Rails 3)
答案 0 :(得分:1)
你的意思是你要删除一个汽车对象,而不是一个属于汽车的邮政对象,对吗?
如果属实,则应使用car_path(car)
代替car_post_path(car)
有两种方法:
# 1
%td= link_to t("delete"), car_path(car), :confirm => "Are you sure?", :method => :delete
# 2
%td= link_to t("delete"), car, :confirm => "Are you sure?", :method => :delete
由于这是一个RESTful资源,在#2中使用car
传递:method => :delete
对象就足以告诉rails使用car_path(car)
。所以这两者具有相同的效果。
答案 1 :(得分:0)
<%= link_to 'DELETE', car, :confirm => 'Are you sure?', :method => :delete %>
请浏览this指南。
答案 2 :(得分:0)
将代码更改为以下
%TD
的link_to =(T( “删除”), car_path(汽车))
因为你没有将与ruote的任何关系与你的代码相关联。所以检查它..
答案 3 :(得分:0)
我看到这个问题还有其他好的答案。我只想补充一点,如果你想列出应用程序中定义的路由,你应该启动:
...$ rake routes
从命令行获取类似
的内容 speakers GET /speakers(.:format) {:action=>"index", :controller=>"speakers"}
POST /speakers(.:format) {:action=>"create", :controller=>"speakers"}
new_speaker GET /speakers/new(.:format) {:action=>"new", :controller=>"speakers"}
edit_speaker GET /speakers/:id/edit(.:format) {:action=>"edit", :controller=>"speakers"}
speaker GET /speakers/:id(.:format) {:action=>"show", :controller=>"speakers"}
PUT /speakers/:id(.:format) {:action=>"update", :controller=>"speakers"}
DELETE /speakers/:id(.:format) {:action=>"destroy", :controller=>"speakers"}
因此,如果您使用_path
或_url
(例如)edit_speaker
后缀,您将获得edit_speaker_path
或edit_speaker_url
作为可调用方法的名称你的路线。