所以我在erb上有这个:
<%= fields_for camera, :index =>camera.id do |field|%>
<%= field.check_box :alertflag %>
这是在控制器上:
@camera = Camera.update(params[:camera].keys, params[:camera].values)
它适用于一台具有Rails 3.0.9的服务器,但由于某种原因,它在一台具有Rails 3.2的服务器上的工作方式不同。
params hash在3.0.9上是这样的:
camera%5B10%5D%5Balertflag%5D=0
在3.2:
camera%5Balertflag%5D=0
所以索引丢失了。
答案 0 :(得分:2)
两个Rails版本都支持index
选项。但是,在比较两个Rails版本中FormHelper
模块的源代码时,很明显fields_for
方法签名已从以下更改:
def fields_for(record_or_name_or_array, *args, &block)
在Rails 3.0中,
def fields_for(record_name, record_object = nil, fields_options = {}, &block)
<{3>}中的。
因此,如果您需要传递options
(例如index
),则必须立即将其作为第三个参数传递给方法,如下所示:应该工作:
<%= fields_for :camera, camera, :index => camera.id do |field| %>