9

I have the following code in Ruby, take directly from the Getting Started with Rails guide

 def create
  @post = Post.new(post_params)

  @post.save
  redirect_to @post
end

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

When I run the above Create I get the following error.

can't convert Symbol into string

4

3 回答 3

32

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

配置强参数如下:

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

有关配置的更多详细信息,请参阅文档

现在你的代码应该可以工作了。

于 2013-07-02T12:00:58.360 回答
1

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

Mongoid::Document.send(:include, ActiveModel::ForbiddenAttributesProtection)
于 2014-04-07T20:35:47.357 回答
0

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

于 2014-01-22T10:57:55.957 回答