Ruby on rails 没有路由匹配{:action=>;“show";,:controller=>;“schools";}缺少所需的键:[:id]

Ruby on rails 没有路由匹配{:action=>;“show";,:controller=>;“schools";}缺少所需的键:[:id],ruby-on-rails,Ruby On Rails,我不知道为什么我不能为我的项目中的每个学校创建一个信息链接。以下是全部错误: 没有路由匹配项{:action=>“show”,:controller=>“schools”}丢失 所需密钥:[:id] 这是我的index.html.erb: <% @schools.each do |school| %> <%= school.name %> <%= link_to "Info", school_path, class: "btn btn

我不知道为什么我不能为我的项目中的每个学校创建一个信息链接。以下是全部错误:

没有路由匹配项{:action=>“show”,:controller=>“schools”}丢失 所需密钥:[:id]

这是我的index.html.erb:

    <% @schools.each do |school| %>
      <%= school.name %>
      <%= link_to "Info", school_path, class: "btn btn-info" %>
      <br>
    <% end %>


学校(u controller.rb):

class SchoolsController < ApplicationController
  def show
    @school = School.find(params[:id])
  end

  def new
    @school = School.new
  end

  def edit
    @school = School.find(params[:id])
  end

  def index
    @schools = School.all
  end

  def create
    @school = School.new(school_params)

    @school.save
    redirect_to @school
  end

  private

    def school_params
      params.require(:school).permit(:name)
    end
end  
class-SchoolsController
您需要将学校对象或学校id传递给学校路径方法。因此,它可以通过该id创建路径

<% @schools.each do |school| %>
  <%= school.name %>
  <%= link_to "Info", school_path(school), class: "btn btn-info" %>
  <br>
<% end %>



因为您正在学习,我将给您一些背景知识

--

没有路线匹配

该错误意味着您无法找到所引用的路由

它给出了以下规格:

缺少必需的密钥:[:id]

这意味着路由存在,但您尚未填写
id
参数

--

<> P>帮助您理解这是如何工作的,请考虑:

这些是使用Rails中的
resources
指令创建的路由。我现在不会解释这一点,只是说当你调用
school\u path
时,你指的是路线中的
GET/schools/:id
路径

因此,您必须记住的是,当您调用此路由时,您必须向它发送一个
id
-
url.com/schools/1
。这允许控制器查找适当的记录(
School.find params[:id]

当你打电话

<%= link_to "Info", school_path, class: "btn btn-info" %>



非常感谢。我正在关注的教程,并试图找出它的东西,我的项目。祝您愉快,先生。好的,我会的,上面说我需要等4分钟。再次感谢您,先生。您也可以使用
谢谢您,派克先生,您的回答很有帮助。祝您有个美好的一天。
<%= link_to "Info", school_path, class: "btn btn-info" %>
<%= link_to "Info", school_path(school), class: ".." %>
<%= link_to "Info", school, class: "..." %>