Rails 2.3.5
我有一个表单,其中有一个名为'MAX'的表单字段,我包含一个'MIN'参数作为隐藏字段。 MIN参数正确包含在“threshold_control”参数集中。但是,由于某些原因,Rails在更新语句中不包括MIN。我根本不明白为什么MIN参数很好,而且形式为param set。
我想我可以手动更新SQL。有谁知道为什么MIN参数不包含在更新语句中?谢谢!
<% form_for(@threshold_control) do |f| %>
<%= f.error_messages %>
<%= hidden_field_tag(:min_max, 'same') %>
<%= f.hidden_field :min, :value => @threshold_control.min %>
@threshold_control.update_attributes(params[:threshold_control])
Processing ThresholdControlsController#update (for 127.0.0.1 at 2011-12-21 11:59:50) [PUT]
Parameters: {"commit"=>" Update ", "authenticity_token"=>"SZCCvAKRbHXEOhYp/+JcTJnMaI3YbxAP8LzwiqqfKbE=", "id"=>"71", "min_max"=>"same", "threshold_control"=>{"max"=>"12.1", "min"=>"12.0"}}
ThresholdControl Columns (87.0ms) SHOW FIELDS FROM `threshold_controls`
ThresholdControl Load (1.0ms) SELECT * FROM `threshold_controls` WHERE (`threshold_controls`.`id` = 71)
SQL (1.0ms) BEGIN
ThresholdControl Update (16.0ms) UPDATE `threshold_controls` SET `max` = 12.1, `updated_at` = '2011-12-21 11:59:51' WHERE `id` = 71
SQL (21.0ms) COMMIT
答案 0 :(得分:0)
所以它包含在参数中:
"threshold_control"=>{"max"=>"12.1", "min"=>"12.0"}
是min中db的实际列吗?你运行了所有的迁移吗?您是否在此模型的任何列上有attr_protected(或attr_accessible)?
另外,另外,如果min是db列 - 你不需要:value=> @threshold_control.min
你应该能够逃脱:
<%= f.hidden_field :min %>
(即使你只在ruby动作中设置了@threshold_value的min并且它没有被保存) 如果上面没有填充min ...的值,那也是有用的。