Blog::PostsController#create 中的 NoMethodError

NoMethodError in Blog::PostsController#create

注意:Rails这里是新人。

所以,我最近创建了一个 Rails 应用 mongoid gem 供 MongoDB 使用。我有一个 :blog 的命名空间路由和 posts

的资源嵌套

Routes.rb:

Rails.application.routes.draw do
  namespace :blog do
    resources :posts
  end
end

错误来自app/controllers/blog/posts_controller.rb:

Class Blog::PostsController < ApplicationController
  def create
   @post = Post.new(post_params)

  if @post.save
    redirect_to @post
  else
    render 'new'
  end
 end

 private
 def post_params
 params.require(:post).permit(:title, :body)
 end
end

我还有一个带有标题的 'post' 模型和 body:

Class Post
 include Mongoid::Document
 field :title, type: String
 field :body, type: String
end

在new.html.erb中:

<h1>Rails Sample Blog</h1>

<%= form_for @post, url: blog_post_path do |f| %>
  <div><%= f.label :title %><%= f.text_field :title %></div>
  <div><%= f.label :body %><%= f.text_area :body %></div>
<% end %>

有什么我遗漏了但没听清的吗? 它慢慢地困扰着我。

编辑:查看此 Git 回购:https://github.com/hackathons-com/Rails-MongoDB-Devise-test

编辑 2:

undefined method `post_url' for #<Blog::PostsController:0x007f3d19105ee8>
 app/controllers/blog/post_controller.rb:

这不应该是posts_controller.rb吗?

还有

Class Blog::PostController < ApplicationController

应该是

Class Blog::PostsController < ApplicationController

试试这个:

 def create

 @blog = Blog.find(params[:blog_id])

 @post= @blog.posts.build(post_params)

(假设您已经添加了 blog_id 的一列并且关联正确,尽管查看您的模型看起来您可能缺少关联?)