使用form_tag更新数据库中的记录

时间:2011-11-16 14:14:59

标签: ruby-on-rails

在我的视图页面中,我使用form_tag创建一个表单,该表单将一个id字符串从隐藏字段传递给控制器​​代码。

在我的控制器代码中,我循环遍历一组id以更新Expression表中包含该id的每条记录。但是下面的代码似乎不起作用。 如果有人能就下面的代码有什么问题给我一些建议,我真的很感激。

def update_expression
  @emi_ids_array = params[:emi_ids].split(/,/)
  @sub_id = params[:sub_id]

  @emi_ids_array.each do |emi_id|
    @existing_exp = Expression.find(:first, :conditions => [ "EXT_EMI_ID = ? and EXT_SUB_FK = ?", emi_id, @sub_id])
    @expression = @existing_exp.update_attributes(
      :EXT_SUB_FK => @sub_id,
      :EXT_PRESENCE => "present",
      :EXT_STRENGTH => "weak",
      :EXT_EMI_ID => emi_id
    )
  end
end

2 个答案:

答案 0 :(得分:0)

尝试将ID的数组(和sub_id)转换为整数。

对象的发现是失败还是更新?在更新调用之后输出@expression.errors以查看是否有任何验证失败。

所有实例变量都有原因吗?如果变量不超出该方法,则不需要@。 @expression项似乎是多余的,你只是复制@existing_exp对象,你不需要将返回放入一个新对象,特别是如果每​​次循环运行它都被替换。

答案 1 :(得分:0)

找到了一个临时解决方案。 'update_attributes'似乎不起作用,所以我选择'update_all'属性

 Expression.update_all({:EXT_PRESENCE => "present", :EXT_STRENGTH => "weak"},['EXT_EMI_ID = ? and EXT_SUB_FK = ?', emi_id, @sub_id])

希望它可能对其他人有用