标签: ruby-on-rails-5

使用Rails 5.2 ActiveStorage创建和保存pdf,然后附加到电子邮件

我担心新的主动存储功能会出现问题.我想要做的是创建一个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

19
推荐指数
1
解决办法
3899
查看次数

Rails服务器看不到代码更改和重新加载文件

我注意到我的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)

ruby-on-rails vagrant puma ruby-on-rails-5

18
推荐指数
2
解决办法
1万
查看次数

如何将Rails 5 API应用程序转换为可以充当API和应用程序的rails应用程序?

我最初使用--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应用程序转换为完整的应用程序?

谢谢!

ruby-on-rails rails-api ruby-on-rails-5

18
推荐指数
3
解决办法
3792
查看次数

Rails 5,"nil不是有效的资产来源"

我刚刚升级到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升级问题吗?

ruby ruby-on-rails ruby-on-rails-5

18
推荐指数
2
解决办法
8470
查看次数

skip_before_action和Rails 5

我刚刚升级到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)

ruby rspec ruby-on-rails actioncontroller ruby-on-rails-5

18
推荐指数
2
解决办法
9120
查看次数

如何使用params.fetch强参数

使用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方法.

ruby-on-rails ruby-on-rails-5

18
推荐指数
2
解决办法
9686
查看次数

Rails:ENV.fetch()和ENV []之间的区别

这两种语法有什么区别:

ENV.fetch("MY_VAR")

ENV['MY_VAR']

我已经看到Rails 5在不同的地方使用这两个版本,并且无法弄清楚区别是什么(除了第一个更多的字符要输入).

ruby ruby-on-rails ruby-on-rails-5

18
推荐指数
1
解决办法
8935
查看次数

为什么Rails无法通过“预计在`app / assets / config / manifest.js`中找到清单文件(Sprockets :: Railtie :: ManifestNeededError)”启动?

经过bundle update我的Rails应用程序未能启动用:

Expected to find a manifest file in `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError)
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-5

18
推荐指数
3
解决办法
2531
查看次数

从iOS应用程序连接到ActionCable

我整天都被困在这一天.我有David Heinemeier Hansson工作正常的非常简单的ActionCable示例应用程序(聊天应用程序)(https://www.youtube.com/watch?v=n0WUjGkDFS0).

我试图用iPhone应用程序点击websocket连接.我连接时能够接收ping ws://localhost:3000/cable,但我不太确定如何从javascript上下文之外订阅频道.

ruby-on-rails websocket ruby-on-rails-5 actioncable

17
推荐指数
2
解决办法
5467
查看次数

Rails - 验证:如果一个条件为真

在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)

谢谢!

validation ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

17
推荐指数
2
解决办法
2万
查看次数