Ruby on rails 没有路由匹配{:action=>;“show";,:controller=>;“posts";}缺少必需的键:[:id]
我正在用\u表单:Ruby on rails 没有路由匹配{:action=>;“show";,:controller=>;“posts";}缺少必需的键:[:id],ruby-on-rails,ruby,model-view-controller,Ruby On Rails,Ruby,Model View Controller,我正在用\u表单:处理这一行,这给了我一个错误: No route matches {:action=>"show", :controller=>"posts"} missing required keys: [:id] 请记住,在我的路线中我有:资源:blog,controller:'posts',也就是说我正在使用posts MVC,但我希望路线中的/posts/被/blog/取代 posts\u控制器 def new @post = Post.new end
处理这一行,这给了我一个错误:
No route matches {:action=>"show", :controller=>"posts"} missing required keys: [:id]
请记住,在我的路线中我有:资源:blog,controller:'posts'
,也就是说我正在使用posts MVC,但我希望路线中的/posts/被/blog/取代
posts\u控制器
def new
@post = Post.new
end
def edit
end
当我转到edit
,但不创建new
时,\ u表单工作
路线
blog_index GET /blog(.:format) posts#index
POST /blog(.:format) posts#create
new_blog GET /blog/new(.:format) posts#new
edit_blog GET /blog/:id/edit(.:format) posts#edit
blog GET /blog/:id(.:format) posts#show
PATCH /blog/:id(.:format) posts#update
PUT /blog/:id(.:format) posts#update
DELETE /blog/:id(.:format) posts#destroy
model_path
默认情况下,Rails中的路由逻辑会导致blog\show
=>/blogs/:id
将其更改为blogs\u path
看着你们的路线,我看到明显的命名冲突,你们一定是把路线定义错了
请确保它看起来像resources:posts,:as=>“blogs”
,都是复数形式
UPD
如果您只想拥有一个博客,那么resource:post,:as=>“blog”
,两者都是单数
但这意味着一个实际的投入。我很肯定你说的是
blog/post1
,blog/post2
,否则我觉得称它为blog没有任何意义 model_path
默认情况下,Rails中的路由逻辑会导致blog\show
=>/blogs/:id
将其更改为blogs\u path
看着你们的路线,我看到明显的命名冲突,你们一定是把路线定义错了
请确保它看起来像resources:posts,:as=>“blogs”
,都是复数形式
UPD
如果您只想拥有一个博客,那么resource:post,:as=>“blog”
,两者都是单数
但这意味着一个实际的投入。我很肯定你说的是blog/post1
,blog/post2
,否则我觉得称它为blog没有任何意义 对不起,我的英语
在这一行中,您将重定向表单以显示(blog\u路径)
但是,根据路线的不同,该节目需要一个id(blog-GET/blog/:id(:format))
您必须在控制器中创建一个“create”方法来接收参数
您还可以使用另一种方法:rails生成scaffold\u控制器帖子
这将生成完整的CRUD,因此您只需配置参数
我希望这能帮助你对不起,我的英语
在这一行中,您将重定向表单以显示(blog\u路径)
但是,根据路线的不同,该节目需要一个id(blog-GET/blog/:id(:format))
您必须在控制器中创建一个“create”方法来接收参数
您还可以使用另一种方法:rails生成scaffold\u控制器帖子
这将生成完整的CRUD,因此您只需配置参数
我希望这对你有所帮助我这样做到了两全其美:
resources :blog, to: 'posts'
resources :posts
我通过这种方式获得了两个世界的最佳结果:
resources :blog, to: 'posts'
resources :posts
为什么要将帖子提交给博客控制器?同样的错误@KMRakibulIslam:(@BroiSatse我没有提交给博客控制器。我提交给帖子控制器。没有博客控制器、模型、视图等。都是帖子。我只使用“blog”对于routes insteadSame error@KMRakibulIslam。感谢您尝试。@AnthonyGalli.com通过指定
url:blog\u path
,您将表单指向posts\show
,这是您永远不应该做的。假设您想点击创建操作,您应该使用blogs\u path
。不确定的默认值是否简单_表单
是:post
,如果不是,请添加方法::post
。为什么要将帖子提交给博客控制器?同样的错误@KMRakibulIslam:(@BroiSatse我没有提交给博客控制器。我提交给博客控制器。没有博客控制器、模型、视图等。我只使用“blog”对于routes insteadSame error@KMRakibulIslam。感谢您尝试。@AnthonyGalli.com通过指定url:blog\u path
,您将表单指向posts\show
,这是您永远不应该做的。假设您想点击创建操作,您应该使用blogs\u path
。不确定的默认值是否简单_表单
是:post
,如果不是,请添加方法::post
。我得到未定义的局部变量或方法“blogs\u path”
@AnthonyGalli.com,提供rake路由
输出良好呼叫。更新question@AnthonyGalli.com,你的资源看起来像我更新的吗?都是复数吗?是的,这是关键,确保复数资源的
匹配:blogs
。我得到未定义的局部变量或方法“blogs\u path”
@AnthonyGalli.com,提供rake路由
输出良好呼叫。更新question@AnthonyGalli.com,你的资源看起来像是我更新的吗?都是复数吗?是的,这是关键,确保多个资源
与:博客的匹配。