相关信息
问题
如果用户使用js添加关联模型的字段 并提交n次形式 n创建新的关联模型
这是因为js-added字段没有id_属性的hidden_field,每次表单都被提交,params不包含该特定嵌套记录的id。即第一次没问题,在第二次ajax post请求(提醒 - 页面没有重新加载)之后应该更新该记录,而是创建新记录,因为没有为这个已经存在的记录传递id参数。
问题
我是否应该在控制器中进行脏黑客攻击,以确定是否应该保存新记录以及是否存在 - 通过添加隐藏字段和新保存的记录ID值,在视图中更新动态添加的表单。问题是 - 如何轻轻地完成,编写最易维护和最强大的代码?
目前,更新操作已经过时了,脏兮兮的想法已被评论
def update
@user = current_user
respond_to do |wants|
wants.js {
#analyze parameters to find out which
#nested model is going to be saved (not updated)?
#also save identifier of nested record in view i.e. {...."324324234" => {:a => 1, :b => 2, .... etc}}
@user.update_attributes(params[:user])
# check if the record of the model was saved and take it's id;
# use identifier 324324234 to find nested form and insert hidden
# field with record id using rjs
}
end
end
我希望我能清楚地定义我的问题。我真的想避免这样的黑客并编写漂亮的代码。我也不想用ajax重新加载页面或部分页面。有什么建议吗?