访问params 值内的参数数组
我有以下参数:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"06Us9R1wCPCJsD06TN7KIV/2ZeH4dJlZVqc12gpKBbo=", "run"=>{"box_id"=>"1"}, "tapes"=>{"1"=>{"tape_id"=>"1"}, "2"=>{"tape_id"=>"2"}, "3"=>{"tape_id"=>"3"}}, "commit"=>"Create Run"}}
我想创建一个框ID为1的新“运行”,然后将磁带1 2和3关联到此运行,框ID为1
我不确定需要进入控制器的代码,我尝试过:
def create @run = Run.new(params[:run]) @tape_ids = @run.build_tape(params[:run][:tapes]) @run.save
当我提交下面的表单时,它会使用正确的框创建一个新的Run,但不会将磁带与它相关联。
prohibited this tape from being saved:
index%> index %>
如果您没有执行accepts_nested_attributes_for
,那么这可能会有效。 我不知道build_tape
应该做什么,但是下面的内容将为您提供一系列tape_ids:
@tape_ids = params[:run][:tapes].map { |k, v| v["tape_id"].to_i }
要完成关联,您可以执行类似的操作
params[:run][:tapes].each do |k, v| t = Tape.find(v["tape_id"].to_i) t.run = @run t.save end
- has_one和has_many在同一个模型中。 铁轨如何跟踪它们?
- Activerecord多态机制如何用于MTI实现?
- Rails仅迭代与对象关联的持久记录
- ActiveRecord的:: UnknownAttributeError?
- 有没有办法重命名ActiveRecord模型列?
- Controller中的ActiveRecord :: AssociationTypeMismatch#在下拉列表中创建Rails自联接
- 通过子对象的最大字段值查找ActiveRecord对象?
- validationRails中多对多关联的唯一性
- 重命名ActiveRecord / Rails的created_at,updated_at列