不同路径的两个相同 ERB 表达式产生不同结果
Two identical ERB expressions for different routes yielding different results
我 运行 遇到 Rails 7 应用程序的问题。我定义了以下路线:
Rails.application.routes.draw do
# Defines the root path route ("/")
root "site#index"
# Routes for rest of site
get "/site", to: "site#index"
resources :projects
resources :coursework
我的模型项目和课程的控制器都是由 rails generate controller
生成的默认值(即它们都没有操作),并且它们在 app/views/
文件夹中都没有视图。但是,我的 site
的 index.html.erb
会产生错误:
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Minimum Reproducible Example</title>
</head>
<p>
<%= link_to "View All Courses", :coursework %>
<%= link_to "View All Projects", :projects %>
</p>
ActionController::UrlGenerationError in Site#index
No route matches {:action=>"show", :controller=>"coursework"}, missing required keys: [:id] Did you mean? coursework_url
rails routes
显示 projects#show
和 coursework#show
。
如果我注释掉第一个 link,它将完美运行(页面将呈现,并且按预期单击查看所有项目时会出错,因为我没有定义 index
在控制器或视图中)。为什么这两个控制器会有所不同,这两个控制器除了名称外都相同?
感谢任何帮助。谢谢!
在 link_to "View All Projects", :projects
中,因为项目是复数,rails 正在生成 link 到索引路由 /projects
,工作正常。
但是对于 link_to "View All Courses", :coursework
,由于课程作业是单数的,它正在尝试路由到表演路线,/coursework/:id
,但由于未提供 ID 而失败。
Rails 建议将您的控制器复数化以允许许多这些路由细节起作用 (Guide link),因此我建议将控制器重命名为 CourseworksController
或 CoursesController
.
我 运行 遇到 Rails 7 应用程序的问题。我定义了以下路线:
Rails.application.routes.draw do
# Defines the root path route ("/")
root "site#index"
# Routes for rest of site
get "/site", to: "site#index"
resources :projects
resources :coursework
我的模型项目和课程的控制器都是由 rails generate controller
生成的默认值(即它们都没有操作),并且它们在 app/views/
文件夹中都没有视图。但是,我的 site
的 index.html.erb
会产生错误:
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Minimum Reproducible Example</title>
</head>
<p>
<%= link_to "View All Courses", :coursework %>
<%= link_to "View All Projects", :projects %>
</p>
ActionController::UrlGenerationError in Site#index
No route matches {:action=>"show", :controller=>"coursework"}, missing required keys: [:id] Did you mean? coursework_url
rails routes
显示 projects#show
和 coursework#show
。
如果我注释掉第一个 link,它将完美运行(页面将呈现,并且按预期单击查看所有项目时会出错,因为我没有定义 index
在控制器或视图中)。为什么这两个控制器会有所不同,这两个控制器除了名称外都相同?
感谢任何帮助。谢谢!
在 link_to "View All Projects", :projects
中,因为项目是复数,rails 正在生成 link 到索引路由 /projects
,工作正常。
但是对于 link_to "View All Courses", :coursework
,由于课程作业是单数的,它正在尝试路由到表演路线,/coursework/:id
,但由于未提供 ID 而失败。
Rails 建议将您的控制器复数化以允许许多这些路由细节起作用 (Guide link),因此我建议将控制器重命名为 CourseworksController
或 CoursesController
.