【发布时间】:2017-02-09 09:20:38
【问题描述】:
我正在将我的 Rails 3 项目转换为 Rails4,但我对 strong parameter 感到困惑。
这是Rails 3中的原始代码
series_mission = SeriesMission.create({name: params[:name], mode: Mission.mode_mapping(params[:mode].to_s), start_time: start_time, end_time: end_time, gamecharacter_id: gc.id}, :without_protection => true)
它工作正常。但是我在Rails 4修改成这种方式后就错了。
attrs = { name: params[:name], mode: Mission.mode_mapping(params[:mode].to_s), start_time: start_time,
end_time: end_time, gamecharacter_id: gc.id }
attrs = attrs.require(:series_mission).permit(:name, :mode, :start_time, :end_time, :gamecharacter_id)
series_mission = SeriesMission.create(attrs)
它抛出了这个错误
private method `require' called for #<Hash:0x007fd2a421e8b8>
更新
qset_ids = params[:sub_missions]
start_time = ((t = params[:start_time].to_i) == 0 ? nil : Time.at(t))
end_time = ((t = params[:end_time].to_i) == 0 ? nil : Time.at(t))
只有gamecharacter_id没有经过params
【问题讨论】:
-
您只是从
params中获取:name,其他值从何而来? -
请添加代码
-
而且仅供参考,您可以在参数上调用
require,而不是在哈希上 -
谢谢,我已经更新了我的问题。
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 strong-parameters