Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails中的控制器如何使用params[:id]获取id_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails RubyonRails中的控制器如何使用params[:id]获取id

Ruby on rails RubyonRails中的控制器如何使用params[:id]获取id,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我正在使用RubyonRails创建一个基本的博客。我是新手。我有两个名为category和post_controller的控制器。两者都具有显示功能,如图所示: 对于类别控制器: Category.find(params[:id]) "localhost:3000/categories/2 用于post_控制器 Post.find(params[:id]) 当我输入url时 "localhost:3000/post_controller/2 它显示id为2的帖子。 但当我对类别控制器执

我正在使用RubyonRails创建一个基本的博客。我是新手。我有两个名为category和post_controller的控制器。两者都具有显示功能,如图所示:

对于类别控制器:

Category.find(params[:id])
"localhost:3000/categories/2
用于post_控制器

Post.find(params[:id])
当我输入url时

"localhost:3000/post_controller/2
它显示id为2的帖子。 但当我对类别控制器执行相同的操作时:

Category.find(params[:id])
"localhost:3000/categories/2
这是一个错误的说法

No route matches [GET] "/categories/1"
Rails.root: /home/root/myFirstBlog
当然,我的分类数据库中有一个id为2的元素。 但是,当我使用此url时:

"localhost:3000/categories/show?id=2
它显然可以工作,但两个控制器之间有什么区别,即使它们有相同的代码

另外,我不清楚哪些信息是相关的,所以请在评论中告诉我。我将根据需要编辑我的问题

Rails.application.routes.draw do

  get 'categories/index'
  get 'categories'=>'categories#index'
  get 'categories/edit'
  get 'categories/new'
  get 'home/index'
  get 'post_controller/edit'
  get 'post_controller/index'
  get 'categories/edit'
  get 'categories/index'
  get 'categories/new'
  get 'categories/show'
  resources :category
  resources :post_controller
  root 'post_controller#index'
end

似乎您在URL中拼错了控制器。如果您的控制器是categories localhost:3000/categories/2应该可以工作。

首先:
资源:东西应该是多元化的

resources:things
添加了这些

因此,不需要在路由文件中获取所有的
get'categories/*'

我也不确定是什么
post\u controller
。可能应该重命名为<代码>资源:帖子

这些可能就是你看到不一致的原因。如果不深入研究,很难说到底发生了什么

您的路由文件应类似于:

Rails.application.routes.draw do
  resources :category # handles actions for all categories CRUD
  resources :posts  # handles actions for all posts CRUD
  root 'post_controller#index' #root view. i.e. "/"
end

你能通过你的路线文件吗?@AnantKolvankar我通过了。请检查一下。可能是您首先没有id=1的类别。尝试使用id为2的相同url,而不是1在顶部放置
resources:category
,然后删除所有路由
get'categories/xxx'
我发现了这一点。无论如何,谢谢!:)