我正在观看一个视频系列,作者在其中使用RoR 4创建了一个简单的CMS,但是我目前安装了RoR3.x。 我将所有代码都跟在了“ T”后面,但是当我尝试在简单的CMS中创建一个简单的主题时,出现了错误。 所以我检查了log / production.log
我收到以下错误, TypeError (no implicit conversion of Symbol into String):
控制器代码如下所示:
def create
# Instantiate a new object using form parameters
# the below line should work with rails v3.x
# @subject = Subject.new(params[:subject])
@subject = Subject.new(subject_params)
# Save the object
if @subject.save
# add flash hash
flash[:notice] = "Subject created successfully."
# if save succeeds, redirect to the index action
redirect_to(:action => 'index')
else
# if save fails, redisplay the form so user can fix problems
render('new')
end
end
我为主题新参数创建的私有方法如下所示
private
def subject_params
# same as using "params[:subject]", except that it:
# - raises an error if :subject is not present
# - allows listed attributes to be mass-assigned
params.require(:subject).permit(:name, :position, :visible)
end
作者告诉您,您需要将@subject = Subject.new(subject_params)
更改为@subject = Subject.new(params[:subject])
。
params.require(:subject).permit(:name, :position, :visible)
是Rails 4的一个功能,称为Strong Parameters 。 如果您不熟悉Rails,建议您使用作者使用的版本来缓解此类将来的版本问题。