我刚刚使用Getting Started with Rails教程尝试Ruby on Rails。我按照所有步骤操作,但我一直在PostsController中创建 TypeError错误
当我在步骤5.6中将数据保存在控制器中时会发生这种情况。
My PostsController.rb看起来像这样:
class PostsController < ApplicationController
def new
end
def create
@post = Post.new(post_params)
@post.save
redirect_to @post
end
private
def post_params
params.require(:post).permit(:title, :text)
end
end
我在localhost:3000 / posts / new。我正在请求POST,但它失败并显示以下内容:
无法将符号转换为字符串
app/controllers/posts_controller.rb:15:in `post_params'
app/controllers/posts_controller.rb:7:in `create'
加载以下文件时发生此错误:发布
您可以在my GitHub repo找到我的所有代码。
请帮助:(
答案 0 :(得分:7)
您正在使用rails版本3.2.xx,在rails版本3.2.xx上不包含strong_parameters gem
请注意,def post_params是私有的。这种新方法阻止了 攻击者通过操纵哈希来设置模型的属性 传递给模特。有关更多信息,请参阅此博客文章 关于Strong Parameters.
将gem "strong_parameters"
添加到您的Gemfile中,然后运行bundle install
在您的模型中加入ActiveModel::ForbiddenAttributesProtection
或创建config/initializers/strong_parameters.rb
并将其放入:
ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection))
config.active_record.whitelist_attributes = false
中 config/application.rb
醇>