【问题标题】:NoMethodError in Blog::PostsController#create博客中的 NoMethodError::PostsController#create
【发布时间】:2015-05-06 03:35:25
【问题描述】:

注意:这里是 Rails newb。

所以,我最近创建了一个带有 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

我还有一个带有标题和正文的“帖子”模型:

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>

【问题讨论】:

  • Class应该是小写的(大写的Class其实就是一个类本身的名字)。不确定这是否能解决问题,但绝对是个问题

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


【解决方案1】:

试试这个:

 def create

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

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

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

【讨论】:

  • 我的路由定义为命名空间/blog/post/:id,但如果我将路由定义为resources :blog do resources :posts end 之类的东西,我也可以这样做。
【解决方案2】:
 app/controllers/blog/post_controller.rb:

这不应该是posts_controller.rb吗?

还有

Class Blog::PostController < ApplicationController

应该是

Class Blog::PostsController < ApplicationController

【讨论】:

  • 是的,我的错。但事实并非如此。
  • 抱歉,我在手机上输入了所有这些内容,所以我发现了错误。感谢您指出这一点。
  • 我现在正在克隆你的仓库。我会告诉你我发现了什么。
  • 帮不上忙,我的朋友。我在 Chromebook 上,设置 MongoDB 有点困难。如果您暂时可以将其转换为 Postgres,我当然可以帮助您查看,因为这不是数据库问题。
  • 你能在像 Nitrous 这样的云虚拟机上注册吗?这消除了很多问题,并且也使用了 Linux。我在工作流程中 99% 的时间都在使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
相关资源
最近更新 更多