0

我有一个“列表”模型和“ListsController”控制器。默认情况下,列表的路由是 /lists/1、/lists/1/edit/ 等。我更改了我的 routes.rb 文件以使其显示路径为“/:id”,新路径为“/新的”。

这是我的路线文件:

ToDo::Application.routes.draw do
  root to: 'pages#home'

  match '/about', to: 'pages#about'
  match '/contact', to: 'pages#contact'
  match '/help', to: 'pages#help'

  resources :lists

  match '/new', to: 'lists#new'
  match '/:id', to: 'lists#show'
  match '/:id/new', to: 'lists#new_item'
end

我可以通过执行“localhost:3000/1”来访问一个列表。但是现在我正在尝试使用link_to,当我执行“link_to“List”,list”时,它会生成一个指向原始路由的url,即“localhost:3000/lists/1”。

有谁知道如何解决这一问题?我的路线有什么我应该做的更好的吗?

谢谢!

4

2 回答 2

1

match您可以简单地为资源提供替代路径,而不是使用:

resources :lists, path: ''
于 2013-06-22T09:36:45.190 回答
0

您需要指定as: 'name'选项来为匹配规则创建命名路由,并覆盖由resource :lists.

resource :lists

match '/new', to: 'lists#new', as: 'new_list'
match '/:id', to: 'lists#show', as: 'list'
于 2013-06-22T09:47:47.707 回答