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