未定义的方法'delete_car_user_path',为什么

时间:2011-12-15 12:47:16

标签: ruby-on-rails

我的 route.rb

map.resources :car_users

car_users_controller.rb

class CarUsersController < ApplicationController
  def index
    @car_users = CarUsers.all
  end

  def show
  end

  def delete
    redirect_to :car_users_path
  end
end

我在index视图中创建了删除链接:

...
<% @car_users.each do |car_usr| %>
    <tr>
     <td>
      link_to "DELETE IT", delete_car_user_path(car_usr.id)
     </td>
   </tr>
 ...

但我得到了错误:

undefined method `delete_car_user_path' for #<ActionView::Base:0x9d17b40>

为什么呢? (我正在使用 Rails v2.3.2

2 个答案:

答案 0 :(得分:1)

因为delete_car_user_path不是一条路线而我认为你没有在任何地方定义它。如果您想要删除链接,请使用:

link_to "DELETE IT", car_user_path(car_usr), :method => :delete, :confirm => 'Are you sure ?'

为了将来参考,请在命令行中使用rake routes来获取路由列表。

答案 1 :(得分:0)

我确实记得Lynda.com上的一位教练说无论出于什么原因,Rails(我在4.2上)都没有实现DELETE路线。我觉得必须有一个更好的方法来做到这一点,但这对我有用(使用RESTful路线):

<%= link_to "DELETE IT", "car_users/#{car_usr.id}/delete", method: :get %>