gpt4 book ai didi

ruby-on-rails-3 - 载波在文件上传中引发“stack level too deep”错误

转载 作者:行者123 更新时间:2023-12-02 04:07:37 25 4
gpt4 key购买 nike

我有一个奇怪的问题,现在不知道如何进一步调试...

如果我以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

但是之后它会引发错误。

在rails控制台中测试载波:
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

工作良好!

好吧,我有一个@其他型号的文件上传文件,因此载波安装工作正常(类似上传程序)。

测试html格式 而不将文件提交到,它工作正常!

所以:
  • 表单不带文件字段
  • carrierwave文件上传在控制台中起作用
  • 不同的模型,类似的载波上传器/配置=>起作用!

  • 我如何进一步调试?

    谢谢你的帮助!

    Rails 3.0.7 / ruby​​-1.9.2-p180 / carrierwave(0.5.3)

    编辑:
    似乎它仅发生在更新操作上。

    Controller :
    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

    最佳答案

    我有一个类似的问题。
    当我调用photo.url时,它抛出了“堆栈级别到严重错误”。

    看来我的PhotoUploader中包含以下代码:

    定义网址
    文件名= self.to_s
    content_type = File.mime_type?(文件名)
    ext = {
    'image / png'=>:png,
    '图像/ jpg'=>:jpg,
    '图像/ JPEG'=>:jpg,
    '图像/ gif'=>:gif

    }[内容类型]
    ext || =:jpg

    {:id => model.id,:version => version_name,:format => ext}
    结束

    这段代码在0.5.8载波中似乎可以正常工作。
    我更新到0.6.2,因为它失败了。

    问题是我正在调用self.to_s。正如我在载波代码中发现的那样:
    to_s的实现如下:

    def to_s
    网址|| ''
    结束

    通过将self.to_s更改为self.file,此问题得以解决

    定义网址
    文件名= self.file
    #...其余代码..
    结束

    关于ruby-on-rails-3 - 载波在文件上传中引发“stack level too deep”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841798/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com