【发布时间】:2018-10-18 15:54:15
【问题描述】:
我有一个生成 epub 的服务,因此我需要生成一个 css 文件以嵌入到 epub 中。
我在epub/style.css.erb 下创建了一个css 视图,但是由于逻辑在服务中而不是在控制器中,因此似乎无法调用render_to_string。实际上,该服务被包装在一个sidekiq作业中,也可以从模型中的after_update调用,所以这对render_to_string有进一步的阻碍。
我可以像EpubController 一样创建并从那里调用render_to_string 方法。但是从我的服务中,位于app/services/epub_export.rb 下,我如何将参数发送到控制器/从控制器接收输出?这样一来,我就觉得我会打破 MVC 模式。
但我也不喜欢古典的方式,例如
File.open(@css_path, 'w') do |f|
f.puts "@charset utf-8;"
f.puts "/* Styles for GEPUB Sample Book */"
f.puts "h1"
f.puts "{"
f.puts " text-align: center;"
f.puts " color: #0000ff;"
f.puts " font-weight: normal;"
f.puts " font-family: #{@font_family};"
f.puts "}"
end
或者有什么替代方法吗?
【问题讨论】:
-
什么意思,“既然逻辑在服务里,不在控制器里,好像没办法调用
render_to_string”? -
我在
app/services/epub_export.rb下有一个服务可以做到这一点,所以我不能打电话给render_to_string -
已编辑问题
标签: css ruby-on-rails file service render