Ruby on rails RubyonRails中的控制器如何使用params[:id]获取id
我正在使用RubyonRails创建一个基本的博客。我是新手。我有两个名为category和post_controller的控制器。两者都具有显示功能,如图所示: 对于类别控制器: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的帖子。 但当我对类别控制器执
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'
我发现了这一点。无论如何,谢谢!:)