注意:这里有新手。
所以,我最近创建了一个带有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>
答案 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
列,并且您的关联正确,但查看您的模型看起来可能会丢失关联?)