Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RoR HTML模板到.docx_Ruby On Rails_Ruby On Rails 4_Docx - Fatal编程技术网

Ruby on rails RoR HTML模板到.docx

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

我需要从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

但是,我得到了一个错误:

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 %>