在我的查看页面中,我使用form_tag创建一个表单,该表单将隐藏字段中的ID字符串传递给控制器代码。使用form_tag更新数据库中的记录
在我的控制器代码中,我通过一个ID数组循环来更新包含表达式表中的该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
只是检查,但被正确地传递给函数的PARAMS - 也许提出params.inspect来检查。这是Rails 2或3吗? (如果3可能将Expression.find语句更改为Expression.where)。 Expression.find是否返回任何结果?在控制台中用一些已知的参数尝试它并检查返回的@existing_exp? – Pasted
是的,find方法返回正确的值 – tanya
也许尝试小写的列名 - 不知道ruby和rails如何与大写的列名称行为,因为它们不会被视为常量?认为你可以解决这个问题,使自己的getter和setter方法(很老的http://snippets.dzone.com/posts/show/2034)或Rails 3的变体(http://stackoverflow.com/questions/ 4605543/rails-3-easy-work-with-pascal-case-column-names) – Pasted