У меня устарелая проблема, и я не знаю, как отлаживать дальше ...
если я загружаю файл с моей HTML-формой, я получаю:
SystemStackError (stack level too deep):
след:
Started POST "/global/accounts/82" for 127.0.0.1 at 2011-07-27 10:28:03 +0200
Processing by Global::AccountsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"tAf/cGPjW+uGgdl6J7t+IZgGsNKkVDLCCWYMFdtQd7g=", "account"=>{"logo_cache"=>"", "shortcut_icon"=>#<ActionDispatch::Http::UploadedFile:0x0000010632daa0 @original_filename="18677_265409985796_708130796_4889342_5500573_n.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"account[shortcut_icon]\"; filename=\"18677_265409985796_708130796_4889342_5500573_n.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/tmp/RackMultipart20110727-3683-1yazc7m>>, "shortcut_icon_cache"=>""}, "commit"=>"Einstellungen speichern", "member"=>{"cancel"=>:get}, "id"=>"82"}
User Load (1.1ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 261 LIMIT 1
Account Load (0.8ms) SELECT `accounts`.* FROM `accounts` WHERE `accounts`.`id` = 82 LIMIT 1
SQL (2.0ms) describe `roles_users`
Role Load (3.8ms) SELECT `roles`.* FROM `roles` INNER JOIN `roles_users` ON `roles`.id = `roles_users`.role_id WHERE `roles`.`name` = 'admin' AND (`roles_users`.user_id = 261 ) LIMIT 1
Account Load (1.9ms) SELECT `accounts`.* FROM `accounts` WHERE `accounts`.`subdomain` = '***' LIMIT 1
SQL (0.2ms) BEGIN
SQL (0.6ms) SELECT 1 FROM `accounts` WHERE (LOWER(`accounts`.`subdomain`) = LOWER('***')) AND (`accounts`.id <> 82) LIMIT 1
AREL (0.5ms) UPDATE `accounts` SET `shortcut_icon` = 'aadf09e05f4db4124c62bfb9340aa9bd.jpg', `updated_at` = '2011-07-27 08:28:08' WHERE `accounts`.`id` = 82
Account Load (0.5ms) SELECT `accounts`.* FROM `accounts` WHERE `accounts`.`id` = 82 LIMIT 1
SQL (1.2ms) ROLLBACK
Completed in 2831ms
SystemStackError (stack level too deep):
анализируя трассировку, кажется, что файл загружен и записан в БД:
AREL (0.5ms) UPDATE `accounts` SET `shortcut_icon` = 'aadf09e05f4db4124c62bfb9340aa9bd.jpg', `updated_at` = '2011-07-27 08:28:08' WHERE `accounts`.`id` = 82
но после этого выдает ошибку ....
проверка несущей волны в консоли рельсов:
ruby-1.9.2-p180> path = "/Users/kalle/Desktop/button.png"
ruby-1.9.2-p180> u = Account.last
ruby-1.9.2-p180> u.logo = File.open(path)
=> #<File:/Users/kalle/Desktop/button.png>
ruby-1.9.2-p180> u.save!
=> true
отлично работает!
Хорошо, у меня есть файл загрузки @ другой модели, поэтому установка carrierwave работает нормально (аналогично загрузчику).
тестирование html-формы без файла , работает нормально!
так:
- Форма работает без поля файла
- Загрузка файлов на носителе работает в консоли
- другая модель, схожий с загрузчиком несущей / config => работает!
как мне продолжить отладку?
спасибо за любую помощь!
Rails 3.0.7 / ruby-1.9.2-p180 / carrierwave (0.5.3)
EDIT:
кажется, что это происходит только при обновлении.
* * Контроллер тысяча сорок четыре:
def update
if current_account.update_attributes(params[:account])
flash[:notice] = 'Successfully updated account.'
redirect_to global_settings_path
else
render :action => 'edit'
end
end