update_all меняет значение всех записей на указанное. То есть, вы сначала всем картинкам ставите позицию 1, потом всем 2 и т.д.
Если в вашем цикле id - это id картинки, то нужно что-то вроде:
ActiveRecord::Base.transaction do
params[:image_pos].each_with_ibdex do |id, index|
Image.find(id).update_attributes(image_pos: index)
end
end
Но в данном случае index - это не то, что указали в форме, а просто по порядку от 1 до количества image_pos.
В общем, окончательная запись зависит от вашего хэша image_pos