Rails路由错误5

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails路由错误5相关的知识,希望对你有一定的参考价值。

我是rails的新手,并试图不使用resources :todos并逐个构建我的路线。但是,我收到以下错误:

TodosController#show中的ActiveRecord :: RecordNotFound 用'id'= id找不到Todo

我的路线:

Rails.application.routes.draw do
  get '/todos' => 'todos#index'
  get '/todos/:id' => 'todos#show'
end

我的控制器:

class TodosController < ApplicationController

  def index 
    @todos = Todo.all
  end 

  def show
    @todo = Todo.find(params[:id])
  end 
end

我的看法:

<h1>Todo show page</h1>
<p>Title: <%= @todo['title'] %></p>
<p>Description: <%= @todo['description'] %></p>
<%= link_to 'Back to todo list', todo_path %>

我的佣金路线结果如下:

todos GET  /todos(.:format)     todos#index

它没有显示我设置它的节目路线。 如果你能提供帮助我很感激。谢谢。

答案

你的代码看起来很好,它应该完美的工作。我只是认为你没有传递数据库中存在的正确的Todo id。

因此,当您通过访问来尝试代码时:http://localhost:3000/todos/1确保1或任何id是数据库中记录的真实ID。

否则你将永远得到错误ActiveRecord::RecordNotFound

从你的rails console你可以尝试类似:Todo.first.id来获得第一个todo的id。然后使用此ID打开todos/:id路线。

以上是关于Rails路由错误5的主要内容,如果未能解决你的问题,请参考以下文章

错误的参数类型类(预期的模块)Rails 5 拆分路线

导致资产预编译在heroku部署上失败的代码片段

Rails 4 RoutingError:没有路由匹配 [POST]

Rails 路由错误

如何在生产模式下修复 Rails 的路由错误?

Rails 生产静态文件路由错误