我有一条路线post '/blogs/:blog_id/posts', 'posts#create'
指向PostsController#create
:
class PostsController < ApplicationController
def create
@post = Post.new(post_params)
if @post.save
render json: @post, status: :created
else
render json: @post.errors, status: :unprocessable_entity
end
end
private
def post_params
params.require(:post).permit(:url)
end
end
由于blog_id
不是post_params
的一部分,所以rails会引发MySQL错误,指出blog_id
中缺少Post.new
。我该如何处理?处理它的正确方法是什么?
谢谢。
答案 0 :(得分:1)
通常,“流氓”模式是:
@blog = Blog.find(params[:blog_id])
@post = @blog.posts.build(post_params)
if @post.save
....