- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经和这个家伙作战了一段时间,并且对它进行了所有的Googlies(here,here以及许多同样无助的其他操作),但无济于事。
官方错误是在我的create方法的第一行上调用的:
Unable to autoload constant ActiveStorage::Blob::Analyzable, expected /Users/lizbayardelle/.rvm/gems/ruby-2.5.0/gems/activestorage-5.2.1/app/models/active_storage/blob/analyzable.rb to define it
blog
模型,这两个
has_one_attached
:pdf
和一个
:image
都通过ActiveStorage实现。这些关系都在
blog
模型中:
class Blog < ApplicationRecord
belongs_to :user
has_one_attached :image
has_one_attached :pdf
end
blogs#create
模型在这里:
def create
@blog = Blog.new(blog_params)
@blog.user_id = current_user.id
if @blog.published
@blog.published_on = DateTime.current
end
respond_to do |format|
if @blog.save
@blog.image.attach(params[:image])
@blog.pdf.attach(params[:pdf])
format.html { redirect_to @blog, notice: 'Blog was successfully created.' }
format.json { render :show, status: :created, location: @blog }
else
format.html { render :new }
format.json { render json: @blog.errors, status: :unprocessable_entity }
end
end
end
def blog_params
params.require(:blog).permit(:title, :teaser, :body, :cta, :category, :linked_module, :published, :published_on, :user_id, :image, :pdf)
end
storage.yml
看起来像这样:
test: service: Disk root: <%= Rails.root.join("tmp/storage") %>
local: service: Disk root: <%= Rails.root.join("storage") %>
# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) amazon: service: S3 access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %> secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %> region: us-west-1 bucket: *bucket name*
With this in my `secrets.yml` (which is GitIgnored, if it makes a difference):
development:
secret_key_base: actual key here
AWS_ACCESS_KEY_ID: actual key here
AWS_SECRET_ACCESS_KEY: actual key here
test:
secret_key_base: actual key here
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
AWS_ACCESS_KEY_ID: <%= ENV["AWS_ACCESS_KEY_ID"] %>
AWS_SECRET_ACCESS_KEY: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
recaptcha_site_key: <%= ENV["RECAPTCHA_SITE_KEY"] %>
recaptcha_secret_key: <%= ENV["RECAPTCHA_SECRET_KEY"] %>
<%= simple_form_for(@blog) do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
<div class="form-inputs">
<div class="form-group">
<%= f.label :category %>
<%= f.select :category, options_for_select(['General', 'House', 'Spouse', 'Kids', 'Other'], { class: "form-control" }) %>
</div>
<div class="form-group">
<%= f.label :title %>
<%= f.text_field :title, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :teaser %>
<%= f.text_area :teaser, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :body %>
<%= f.trix_editor :body %>
</div>
<div class="form-group">
<%= f.label :cta %>
<%= f.text_field :cta, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :linked_module %>
<%= f.text_field :linked_module, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label "Blog Image" %><br />
<%= f.file_field :image %>
</div>
<div class="form-group">
<%= f.label "Linked PDF" %><br />
<%= f.file_field :pdf %>
</div>
<div class="form-group text-center">
<%= f.input :published %>
</div>
</div>
<div class="form-actions text-center">
<%= f.button :submit %>
</div>
<% end %>
Here's my Gemfile:
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.5.0'
gem 'rails', '~> 5.2.0'
gem 'puma', '~> 3.11'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jbuilder', '~> 2.5'
gem 'mini_magick'
gem 'jquery-rails'
gem 'devise'
gem 'bootsnap'
gem 'bootstrap', '~> 4.1.3'
gem 'sprockets-rails'
gem 'bootstrap-sass'
gem 'bcrypt', '~> 3.1.7'
gem 'friendly_id', '~> 5.1.0'
gem 'stripe'
gem 'figaro'
gem 'magnific-popup-rails', '~> 1.1.0'
gem 'simple_form'
gem 'acts-as-taggable-on'
gem 'aws-sdk' , '~> 3'
gem 'aws-sdk-s3', require: false
gem 'simple_form_extension'
gem 'recaptcha', require: "recaptcha/rails"
gem 'font-awesome-rails'
gem 'trix', git: 'https://github.com/bcoia/trix.git'
group :production do
gem 'pg', '~> 0.20.0'
gem 'rails_12factor'
end
group :development, :test do
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'sqlite3'
end
group :development do
gem 'sqlite3'
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
group :test do
gem 'sqlite3'
gem 'capybara', '>= 2.15', '< 4.0'
gem 'selenium-webdriver'
gem 'chromedriver-helper'
end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
[1]: https://medium.com/alturasoluciones/setting-up-rails-5-active-storage-with-amazon-s3-3d158cf021ff
[2]: https://edgeguides.rubyonrails.org/active_storage_overview.html
最佳答案
解决此问题的方法是按顺序运行以下命令。
rails active_storage:install
rake db:migrate
has_one
关联。要修复它,您应该执行以下操作
@blog.image.purge
@blog.image.attach(params[:image])
关于ruby-on-rails - 无法自动加载常量ActiveStorage::Blob::Rails 5.2,AWS S3和ActiveStorage的可分析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52358427/
我正在将一个权限敏感的应用程序迁移到 ActiveStorage。我需要确保文件只能由具有权限的人访问,并且这些权限只能持续指定的时间段。 使用 Paperclip,这就像使用专家授权调用定义路由一样
我想知道 ActiveRecord 模型对象上的图像是否已更改,以便我可以执行其他功能,但看不到任何可用的信息。 IE。 object.image.changed? or object.image_c
我计划在我的一个网站中将 Rails 升级到 5.2 并引入 ActiveStorage,现在我使用 Paperclip 和 paperclip_optimizer。不利的一面是,当用 ActiveS
在我们的 Rails 代码中没有任何名为 default 的队列。但似乎 Sidekiq 将 ActiveStorage::PurgeJob 的队列设置为 default。这就是为什么 purge_l
我有一个表单,用户可以在其中选择要上传的文件。一旦使用 ActiveStorage 直接上传选择了文件,就会上传该文件。有一个提交按钮,在上传完成之前不可点击。 该按钮在表单加载时被禁用。但是,如果由
我有一个基本的 ActiveStorage 设置,其中一个型号为 has_many_attached :file_attachments .在其他地方的服务中,我试图生成一个在主应用程序(电子邮件、工
我有一个简单的 Controller 规范,它应该在创建项目时检查新 Material 的处理是否排队。 materials_controller_spec.rb(#create): it 'qu
我使用 url 方法在 erb 文件中呈现我的事件记录附件的 url。 #controller class RecordMetadataController " width="600" heig
我有一个在 Heroku 上运行的 Rails 6 应用程序,用于捕获视频并上传它们。一个典型的用例是用户制作视频然后上传。为此,我成功地使用了 active storage 并直接上传到 Amazo
我需要给图片加水印,cmd ImageMagick 命令 convert image.png watermark.png -composite target.jpg 或 composite -wate
我使用Rails + ActiveStorage 上传图片文件,上传后想将宽高保存在数据库中。但是,我无法在任何地方找到任何此类示例。 这是我从各种 API 文档中拼凑出来的,但最终还是出现了这个错误
每当尝试附加文件时,我的应用程序(本地)都会引发ActiveStorage::IntegrityError错误。我如何摆脱这个错误? 我只有一个has_one_attached,但我不知道该错误是如何
我将ActiveStorage与默认磁盘服务一起使用。我的api返回图像URL,并且图像通过IMG标签嵌入在前端(Vue.js)中。当我打开图片网址时,图片会正确显示。 render json: {
有没有办法使用 ActiveStorage 验证附件?例如,如果我想验证内容类型或文件大小? 类似 Paperclip 的方法会很棒! validates_attachment_content_t
我正在将 Rails 应用程序从回形针迁移到 ActiveStorage,但它不接受 crop变体中的参数 这一行: @user.image.variant(crop: [180,135]) 导致此错
我没有看到任何关于此事的文件,但要详细说明: 我想使用事件存储在我的 rails 应用程序中上传文件,而不必使用浏览器的文件输入元素。无论是使用拖放,还是各种自定义文件选择器,最好告诉 ActiveS
我在 ActiveStorage 中遇到这个问题,我需要处理图像,我的要求是保存处理过的图像并在裁剪和其他转换后将其附加到新模型。 最佳答案 ActiveStorage::Blob#variant 适
我目前正在将一个 Rails 应用程序(驱动 screenshots.debian.net)从 Paperclip 迁移到 ActiveStorage。它允许用户上传 PNG 图像,然后向所有用户显示
目标 我想上传多个文件。因此,一个Intervention 可以有多个Uploads,每个Upload 都有一个附加文件。这样一来,每个Upload 都可以附加一个具有不同状态、名称、可见性等的文件,
使用 Rails 5.2 rc1,是否可以在开发中直接上传到本地主机? 这是我的表单new.html.erb: 这是我在控制台中得到的错误: ActiveSupport::Messag
我是一名优秀的程序员,十分优秀!