我有一个没有显示动作的控制器。
当前的破坏看起来像这样:
<td><%= link_to 'Destroy', subscriber, :confirm => 'Are you sure?', :method => :delete %></td>
我不希望它指向{subscriber},因为该路由不存在。相反,我希望它指向订阅者索引
<td><%= link_to 'Destroy', subscribers_path, :confirm => 'Are you sure?', :method => :delete %></td>
然而,当我这样做时,我收到以下错误:
No route matches [DELETE] "/subscribers"
我在这里做错了什么?
更新:
这些是我的路线:
resources :subscribers
match 'subscribe' => 'Subscribers#subscribe'
match 'unsubscribe' => 'Subscribers#unsubscribe'
答案 0 :(得分:0)
正如您所说路由不存在,我假设您没有使用资源路由。这意味着你可能有像
这样的东西match 'subscribers' => 'subscribers#index', :via => :get
get 'subscribers' => 'subscribers#index'
这些都不会与删除请求实际匹配,您可以通过从应用根目录运行rake routes
来验证删除请求。
您可以按照以下方式进行调整,以使其匹配:
match 'subscribers' => 'subscribers#index', :via => [ :get , :delete ]
此外,对于更多信息,这可能更有意义,但似乎偏离更传统的基于REST的方法可能会在维护应用程序时导致不必要且可能令人困惑的缺乏清晰度。