【发布时间】:2011-04-15 08:21:19
【问题描述】:
在我的 routes.rb 中,我有以下内容:
resources :message_threads
当我打电话时:
message_threads_path(1)
我明白了:
/message_threads.1
这是为什么?我的其他资源工作正常。我没有正确地复数吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3
在我的 routes.rb 中,我有以下内容:
resources :message_threads
当我打电话时:
message_threads_path(1)
我明白了:
/message_threads.1
这是为什么?我的其他资源工作正常。我没有正确地复数吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3
是的,这是一个复数错误。
通过传递 ID 1,我假设您希望显示一条记录。
所以你需要使用单数的'message_thread':
message_thread_path(1)
这将产生:
http://localhost:3000/message_threads/1
【讨论】:
resources :my_model 还是resources :my_models? (您需要在路由文件中使用复数形式。)
有时这也是当您没有在路由中提供 :as 参数时:
delete "delete/:id" => "home#delete"
改为:
delete "delete/:id" => "home#delete", as: :delete
(忽略这个奇怪的例子,恰好是我们在构建内部应用时遇到的问题)
【讨论】:
match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get] 我的视图标记:<%= link_to "Show Details", xyz_show_path(@project) %> 一直在生产:http://localhost:3000/xyz/show.1 将路线文件更改为:match "/xyz/show/:project_id" => "xyz#show_project", :via => [:get], :as => "show" 允许:<%= link_to "Show Details", show_path(@project) %> 工作。
其他登陆这里的人可能处于这种情况:
如果您在 routes.rb 中声明了单一资源:
resource :map
您不需要将对象传递给map_path。尝试调用 map_path(map) 将导致类似的行为(即像 map.12 这样的 URL)。
【讨论】: