Rails中fundings表status字段无法存储数据问题求助
解决Rails中Funding模型status字段无法存储和显示的问题
看起来你已经搞定了数据库迁移和视图层的代码,但数据就是存不进去——控制台里status一直是nil,这几乎可以肯定是**强参数(Strong Parameters)**没配置对的问题。
Rails为了防止批量赋值安全漏洞,会要求在控制器里明确声明哪些参数是允许被写入模型的。你现在的情况就是表单提交的status参数被Rails过滤掉了,根本没传到模型里去。
解决步骤:
- 打开你的
fundings_controller.rb文件,找到里面的funding_params方法(这个方法专门用来过滤允许的参数)。 - 把
:status添加到permit方法的参数列表里,修改后的代码应该类似这样:
def funding_params params.require(:funding).permit( :describe_activity, :type_of_activity, :season, :activity_details, :name_of_organisation, :activity_start_date, :number_of_weeks, :days_per_week, :hours_per_day, :program_registration_cost, :family_contribution, :other_funds, :other_fund_provider, :amount_requested, :child_id, :status # 这里加上status ) end
- 重启你的Rails服务器(开发环境下有时候热加载会生效,但重启更保险),然后重新提交表单试试。
验证结果:
提交完新的表单后,打开rails console查询对应的Funding记录,你应该能看到status字段已经有你输入的值了,show.html.erb页面也能正常显示这个字段的内容。
另外帮你确认了一下:你的迁移文件是正确的,schema里已经有status字段;视图层的表单和show页面代码也没问题,字段名都是:status,和模型对应上了,所以核心问题就是强参数没包含这个字段。
内容的提问来源于stack exchange,提问作者user9700954
相关产品推荐
相关产品推荐

