我担心新的主动存储功能会出现问题.我想要做的是创建一个pdf(我正在使用WickedPdf)并将其附加到模型.这是第一个问题,我到目前为止唯一的想法是首先写入文件,然后打开此文件以创建附件.
self.document.attach( {
filename: "filename.pdf",
io: File.open(pdf_document)
})
Run Code Online (Sandbox Code Playgroud)
有没有办法从字符串创建附件?
之后我尝试将此文件附加到邮件中.这会失败,因为它需要一个文件,而不是一个blob.
attachments[document.filename.to_s] = document.blob
Run Code Online (Sandbox Code Playgroud)
再次创建一个文件对我来说似乎很奇怪.
可以请有人告诉我,如果没有编写文件,那么实现这一目标的正确方法是什么?对我来说,这似乎是不必要的,无用的和耗时的.
=====
解决方案第2部分:所以我设法在不创建文件的情况下附加文档
attachments[document.filename.to_s] = {:mime_type => 'application/pdf',
:content => document.attachment.blob.download }
Run Code Online (Sandbox Code Playgroud)
第一部分仍然缺失.希望有人有答案!
ruby-on-rails ruby-on-rails-5 rails-activestorage ruby-on-rails-5.2
我注意到我的rails服务器在更改后没有重新加载控制器,模型和可能的任何其他文件.我使用Vagrant和Rails API,我发现有些人通过添加以下行来解决这个问题Vagrantfile.
config.vm.provider "virtualbox" do |vb|
vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 5000 ]
end
Run Code Online (Sandbox Code Playgroud)
它不能解决我的问题.我没有想法我还能做些什么来解决这个问题.我附上可能对您有用的文件.
我Gemfile看起来像这样:
source 'https://rubygems.org'
gem 'rake', '< 11.0'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '>= 5.0.0.beta3', '< 5.1'
# Use mysql as the database for Active Record
# gem 'mysql2', '>= 0.3.18', '< 0.5'
# User PostgreSQL as the database for Active Record
gem 'pg', '~> 0.18'
gem 'active_model_serializers'
gem 'rspec-its'
gem 'database_cleaner'
# Use Puma …Run Code Online (Sandbox Code Playgroud) 我最初使用--api标签在rails 5中创建它.
来自http://edgeguides.rubyonrails.org/api_app.html,
我删除了 config.api_only = true
我变了
class ApplicationController < ActionController::API
end
Run Code Online (Sandbox Code Playgroud)
至
class ApplicationController < ActionController::Base
end
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是视图被渲染,例如.welcome/index.html.erb,相应的CSS文件assets/stylesheets/welcome.css.scss不是.
知道如何解决这个问题,或者更一般地将API应用程序转换为完整的应用程序?
谢谢!
我刚刚升级到Rails 5,在尝试显示图像时我遇到了一个奇怪的问题.
我有Rails 4的确切代码:
<%= image_tag article.image_url(:thumb) %>
Run Code Online (Sandbox Code Playgroud)
但升级后,我得到:
nil is not a valid asset source
Run Code Online (Sandbox Code Playgroud)
在升级到Rails 5之前,我没有任何类似的问题.
这可能有什么问题?它可以是其他东西而不是Rails升级问题吗?
我刚刚升级到Rails 5并且一切都很顺利但是没有明显的原因,一个被调用的方法skip_before_action不允许rspec运行此消息
在process_action回调之前:尚未定义redirect_heroku_user(ArgumentError)
这是非常奇怪的,因为它在rails 4上运行得很好.这是我的代码:
# application_controller.rb
def redirect_heroku_user
redirect_to root_path if heroku_user?
end
# some_controller.rb
skip_before_action :redirect_heroku_user, only: :edit
Run Code Online (Sandbox Code Playgroud) 使用rails g scaffold kittens强参数功能时,kitten_params是
def kitten_params
params.fetch(:kitten, {})
end
Run Code Online (Sandbox Code Playgroud)
我熟悉强参数,
params.require(:kitten).permit(:name, :age)
但我不知道如何使用这个fetch方法.
这两种语法有什么区别:
ENV.fetch("MY_VAR")
ENV['MY_VAR']
我已经看到Rails 5在不同的地方使用这两个版本,并且无法弄清楚区别是什么(除了第一个更多的字符要输入).
经过bundle update我的Rails应用程序未能启动用:
Expected to find a manifest file in `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError)
Run Code Online (Sandbox Code Playgroud) 我整天都被困在这一天.我有David Heinemeier Hansson工作正常的非常简单的ActionCable示例应用程序(聊天应用程序)(https://www.youtube.com/watch?v=n0WUjGkDFS0).
我试图用iPhone应用程序点击websocket连接.我连接时能够接收ping ws://localhost:3000/cable,但我不太确定如何从javascript上下文之外订阅频道.
在Rails上5.
我有一个Order带有description属性的模型.如果满足以下两个条件之一,我只想验证它的存在:如果当前步骤等于第一步或者如果require_validation等于true.
我可以根据以下一个条件轻松验证:
validates :description, presence: true, if: :first_step?
def first_step?
current_step == steps.first
end
Run Code Online (Sandbox Code Playgroud)
但我不知道如何添加另一个条件并验证其中一个是否属实.
就像是:
validates :description, presence: true, if: :first_step? || :require_validation
Run Code Online (Sandbox Code Playgroud)
谢谢!
ruby-on-rails ×10
ruby-on-rails-5 ×10
ruby ×3
actioncable ×1
puma ×1
rails-api ×1
rspec ×1
vagrant ×1
validation ×1
websocket ×1