我在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
时,我收到以下错误。
无法将符号转换为字符串
答案 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 刷新浏览器。