User和Building通过Buildingusers建立了has_many关系。
编辑用户属性涉及编辑连接表属性。但是,出于安全原因,它们需要在被调用的建筑物的基础上单独进行编辑。因此,如果user_controller调用相关的联合表记录
@buildinguser = Buildinguser.where(['building_id = ? and user_id = ?', session[:building_id], params[:id]]).first
用户模型陈述
accepts_nested_attributes_for :buildingusers, :allow_destroy => true
attr_accessible :buildingusers_attributes
如何在用户表单中进行编辑?
<%= f.fields_for :buildingusers do |ff| %>
生成所有连接表记录,这不是目标
<%= f.fields_for @buildinguser do |ff| %>
将生成一个表单,但数据不正确(未调用连接表的id)
<input checked="checked" id="user_buildinguser_operator" name="user[buildinguser][operator]" type="checkbox" value="1" />
如果通过@buildingusers
调用控制器和视图,也会出现同样的情况答案 0 :(得分:0)
<%= hidden_field_tag "buildinguser[building_id]", session[:building_id] %>
做了这个伎俩。灵感来自 avoiding fields_for adding record to associated model