ruby – PostsController中的NoMethodError #create

原谅我的无知,但我不仅是 Ruby的新品,而且是一般的编程.我正在研究rubyonrails.org边缘指南的例子.并且我收到以下错误,尽管我查看了自应用程序上次工作以来我输入的每一段代码,但我无法修复它.

NoMethodError in PostsController#create

undefined method `permit’ for {“title”=>””,
“text”=>””}:ActiveSupport::HashWithindifferentAccess

这就是我的posts_controller.rb的样子:

class PostsController < ApplicationController
  def new
    @post = Post.new
  end

  def create
    @post = Post.new(params[:post].permit(:title,:text))

    if @post.save
      redirect_to action: :show,id: @post.id
    else
      render 'new'
    end    
  end

  def show
    @post = Post.find{params[:id]}
  end  

  def index
    @posts = Post.all
  end        
end

我究竟做错了什么?

预先感谢您的任何帮助!

解决方法

而不是这一行:
@post = Post.new(params[:post].permit(:title,:text))

试试这个

@post = Post.new(params[:post])

看起来你跑过strong_parameters并且有一些教程混音.

如果您确实想使用strong_parameters,请将gem添加到Gemfile并使用以下命令创建初始化程序:

ActiveRecord::Base.send(:include,ActiveModel::ForbiddenAttributesProtection)

然后您的控制器可以是:

class PostsController < ApplicationController
  def new
    @post = Post.new
  end

  def create
    @post = Post.new(post_params)

    if @post.save
      redirect_to action: :show,id: @post.id
    else
      render 'new'
    end    
  end

  def show
    @post = Post.find_by_id(params[:id].to_i)
  end  

  def index
    @posts = Post.all
  end    

  private

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...