在我的查看頁面中,我使用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