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
的一列并且关联正确,尽管查看您的模型看起来您可能缺少关联?)
注意: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
的一列并且关联正确,尽管查看您的模型看起来您可能缺少关联?)