原谅我的无知,但我不仅是
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。