1

我有一个没有显示动作的控制器。

当前的销毁如下所示:

        <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'
4

1 回答 1

0

正如您所说的那样,该路由不存在,我假设您没有使用资源路由。这意味着你可能有类似的东西

match 'subscribers' => 'subscribers#index', :via => :get
get 'subscribers' => 'subscribers#index'

这些都不会真正匹配删除请求,您可以通过rake routes从应用程序根目录运行来验证。

您可以像下面这样调整它,使其匹配:

match 'subscribers' => 'subscribers#index', :via => [ :get , :delete ]

此外,如果有更多信息,这可能更有意义,但似乎偏离更传统的基于 REST 的方法可能会导致在维护应用程序时不必要且可能令人困惑的缺乏清晰度。

于 2012-12-02T18:35:46.243 回答