Ruby on rails RoR HTML模板到.docx
我需要从HTML模板创建一个.docx文件,所以我使用了gem 用法: 我添加了gem(Gemfile): 我放了一条路线(route.rb): 在我的bar.html.erb中,我有一个指向该url的链接:Ruby on rails RoR HTML模板到.docx,ruby-on-rails,ruby-on-rails-4,docx,Ruby On Rails,Ruby On Rails 4,Docx,我需要从HTML模板创建一个.docx文件,所以我使用了gem 用法: 我添加了gem(Gemfile): 我放了一条路线(route.rb): 在我的bar.html.erb中,我有一个指向该url的链接: <%= link_to '.docx', preview_path %> 模板(preview.docx.erb): foobar 在控制器(foos_controller.rb)中: class FoosController
<%= link_to '.docx', preview_path %>
模板(preview.docx.erb):
foobar
在控制器(foos_controller.rb)中:
class FoosController
但是,我得到了一个错误: ActionController::未知信息格式 如何修复此错误 我的配置:
RoR v4.2.4
Ruby v2.2.3p173
更新:正如@kajalojha所提到的,已经被删除到一个单独的gem中,因此我得到了相同的错误。由于respond_to已经从rails 4.2中删除到一个单独的gem中,我建议您使用格式化程序gem 有关更多详细信息,请查看下面的链接
由于respond_to已从rails 4.2中删除到单个gem,我建议您使用格式化程序gem 有关更多详细信息,请查看下面的链接
您试过caracal rails吗?你可以找到它你试过caracal rails吗?你可以找到它今年早些时候,我不得不在一个应用程序中构建同样的功能,还使用了
htmltoword
gem
# At the top of the controller:
respond_to :html, :js, :docx
def download
format.docx {
filename: "#{dynamically_generated_filename}",
word_template: 'name_of_my_word_template.docx')
}
end
然后,我有两个“视图”文件开始工作。第一个是我的方法视图文件download.docx.haml
。此文件包含以下代码:
%html
%head
%title Title
%body
%h1 A Cool Heading
%h2 A Cooler Heading
= render partial: 'name_of_my_word_template', locals: { local_var: @local_var }
从那里,我有另一个文件name\u of\u my\u word\u template.docx.haml
,其中包含我的word文件的内容
%h4 Header
%h5 Subheader
%div= local_var.method
%div Some other content
%div More content
%div Some footer content
当有人点击my_app.com/controller\u name/download.docx时,会为他们生成并下载一个Word文件
为了确保这一点,我在routes.rb
文件中有一个下载方法的路由:
resources :model_name do
member do
get :download
end
end
很抱歉回复太长。。。这对我很有效,我希望能帮助你解决这个问题 今年早些时候,我不得不在一个应用程序中构建同样的功能,还使用了
htmltoword
gem
# At the top of the controller:
respond_to :html, :js, :docx
def download
format.docx {
filename: "#{dynamically_generated_filename}",
word_template: 'name_of_my_word_template.docx')
}
end
然后,我有两个“视图”文件开始工作。第一个是我的方法视图文件download.docx.haml
。此文件包含以下代码:
%html
%head
%title Title
%body
%h1 A Cool Heading
%h2 A Cooler Heading
= render partial: 'name_of_my_word_template', locals: { local_var: @local_var }
从那里,我有另一个文件name\u of\u my\u word\u template.docx.haml
,其中包含我的word文件的内容
%h4 Header
%h5 Subheader
%div= local_var.method
%div Some other content
%div More content
%div Some footer content
当有人点击my_app.com/controller\u name/download.docx时,会为他们生成并下载一个Word文件
为了确保这一点,我在routes.rb
文件中有一个下载方法的路由:
resources :model_name do
member do
get :download
end
end
很抱歉回复太长。。。这对我很有效,我希望能帮助你解决这个问题 所以,我明白了。我在路由中添加了
格式:“docx”
,现在可以使用了
注:正如@kajalojha所提到的,已被移除到单个宝石中,因此我
让我们创建一个下载逻辑
Gemfile
routes.rb
foos_controller.rb
class FoosController
下载.docx.erb
我添加了一些链接来触发下载逻辑:
<%= link_to 'Download bar.docx', foo_download_path %>
它将下载带有“Lorem Ipsum”的bar.docx
文件。因此,我找到了答案。我在路由中添加了格式:“docx”
,现在可以使用了
注:正如@kajalojha所提到的,已被移除到单个宝石中,因此我
让我们创建一个下载逻辑
Gemfile
routes.rb
foos_controller.rb
class FoosController
下载.docx.erb
我添加了一些链接来触发下载逻辑:
<%= link_to 'Download bar.docx', foo_download_path %>
它将下载包含“Lorem Ipsum”的bar.docx
文件。你能建议使用哪种宝石吗?我正在努力找到它,但运气不好。你能发个链接吗?。我现在要测试一下。你能建议使用哪种宝石吗?我正在努力寻找,但运气不好。你能发个链接吗?。现在将测试它。同样的问题。您使用了哪个RoR版本?您是否在该项目中包含了响应者
gem?我在Rails 4.2.6中,确实在我的项目中包含了响应者gem。对不起,没用!我通过在路由中添加格式:“docx”
部分解决了这个问题。检查我的答案,如果我遗漏了,请随意添加:)很高兴为您排序!同样的问题。您使用了哪个RoR版本?您是否在该项目中包含了响应者
gem?我在Rails 4.2.6中,确实在我的项目中包含了响应者gem。对不起,没用!我通过在路由中添加格式:“docx”
部分解决了这个问题。检查我的答案,如果我遗漏了,请随意添加:)很高兴为您排序!
class FoosController < ApplicationController
respond_to :docx
def download
@bar = "Lorem Ipsum"
respond_to do |format|
format.docx do
# docx - the docx template that you'll use
# filename - the name of the created docx file
render docx: 'download', filename: 'bar.docx'
end
end
end
end
<p><%= @bar %></p>
<%= link_to 'Download bar.docx', foo_download_path %>