Blog :: PostsController中的NoMethodError #create

时间:2015-05-06 03:35:25

标签: ruby-on-rails ruby ruby-on-rails-4 mongoid rails-routing

注意:这里有新手。

所以,我最近创建了一个带有mongoid gem的Rails应用程序,用于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

我还有一个帖子&#39;带有标题和正文的模型:

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>

2 个答案:

答案 0 :(得分:1)

 app/controllers/blog/post_controller.rb:

这不应该是posts_controller.rb吗?

另外

Class Blog::PostController < ApplicationController

应该是

Class Blog::PostsController < ApplicationController

答案 1 :(得分:1)

试试这个:

 def create

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

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

(这假设您已经添加了blog_id列,并且您的关联正确,但查看您的模型看起来可能会丢失关联?)