Rails入门教程中的TypeError

时间:2013-07-01 11:47:41

标签: ruby-on-rails ruby

我刚刚使用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找到我的所有代码。

请帮助:(

1 个答案:

答案 0 :(得分:7)

您正在使用rails版本3.2.xx,在rails版本3.2.xx上不包含strong_parameters gem

  

请注意,def post_params是私有的。这种新方法阻止了   攻击者通过操纵哈希来设置模型的属性   传递给模特。有关更多信息,请参阅此博客文章   关于Strong Parameters.


  1. gem "strong_parameters"添加到您的Gemfile中,然后运行bundle install

  2. 在您的模型中加入ActiveModel::ForbiddenAttributesProtection或创建config/initializers/strong_parameters.rb并将其放入:

      

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

  3. config.active_record.whitelist_attributes = false

  4. config/application.rb

    https://github.com/rails/strong_parameters