【发布时间】:2015-12-17 00:26:16
【问题描述】:
我在 _form 中遇到了这一行:<%= simple_form_for(@post, url: blog_path) do |f| %>,这给了我错误:
No route matches {:action=>"show", :controller=>"posts"} missing required keys: [:id]
请记住,在我的路线中,我有:resources :blog, controller: 'posts',也就是说我正在处理帖子 MVC,但我希望 /posts/ 被 /blog/ 替换在路线中。
posts_controller
def new
@post = Post.new
end
def edit
end
当我转到edit 时,_form 可以工作,但不能创建new。
路线
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
【问题讨论】:
-
为什么要向博客控制器提交帖子?
-
同样的错误@KMRakibulIslam :(
-
@BroiSatse 我没有提交给博客控制器。我正在提交给posts_controller。没有博客控制器、模型、视图等。都是帖子。我只是使用“博客”来代替路线
-
同样的错误@KMRakibulIslam。感谢您的尝试。
-
@AnthonyGalli.com 通过指定
url: blog_path,您将表单指向posts#show,这是您永远不应该这样做的。假设您想点击您的create操作,您应该使用blogs_path。不确定simple_form的默认值是否为:post,如果不是,请添加method: :post。
标签: ruby-on-rails ruby model-view-controller