无法将符号转换为字符串

时间:2013-07-02 10:51:31

标签: ruby ruby-on-rails-3

我在Ruby中有以下代码,直接来自Getting Started with Rails指南

 def create
  @post = Post.new(post_params)

  @post.save
  redirect_to @post
end

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

当我运行上述Create时,我收到以下错误。

  

无法将符号转换为字符串

3 个答案:

答案 0 :(得分:32)

您似乎正在尝试使用强参数。您收到此错误无法将符号转换为字符串,因为您尚未配置strong_parameters。因此,默认情况下,您无法使用带符号的params。

配置强参数,如下所示:

1.) Add gem 'strong_parameters' to your gemfile and bundle it.
2.) Include Restrictions to you model as follows.
       include ActiveModel::ForbiddenAttributesProtection to your model.
3.) Disable white listing in application confiuration(config/application.rb)
    config.active_record.whitelist_attributes = false

有关配置的详细信息,请参阅documentation

现在你的代码应该可行了。

答案 1 :(得分:1)

如果有人使用Mongoid,您可以通过将以下内容添加到初始化程序来解决此问题:

Mongoid::Document.send(:include, ActiveModel::ForbiddenAttributesProtection)

答案 2 :(得分:0)

将gem“strong_parameters”添加到gem文件中 在命令提示符下运行> bundle install 刷新浏览器。