不同路径的两个相同 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/ 文件夹中都没有视图。但是,我的 siteindex.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#showcoursework#show

如果我注释掉第一个 link,它将完美运行(页面将呈现,并且按预期单击查看所有项目时会出错,因为我没有定义 index在控制器或视图中)。为什么这两个控制器会有所不同,这两个控制器除了名称外都相同?

感谢任何帮助。谢谢!

link_to "View All Projects", :projects 中,因为项目是复数,rails 正在生成 link 到索引路由 /projects,工作正常。

但是对于 link_to "View All Courses", :coursework,由于课程作业是单数的,它正在尝试路由到表演路线,/coursework/:id,但由于未提供 ID 而失败。

Rails 建议将您的控制器复数化以允许许多这些路由细节起作用 (Guide link),因此我建议将控制器重命名为 CourseworksControllerCoursesController.