2016-05-11 13 views
1

.docxファイルをHTMLテンプレートから作成する必要があります。htmltoword gemを使用しました。RoR HTMLテンプレートから.docx

使用法:私の

get 'preview' => 'foo#preview' 

そして:

gem 'htmltoword', '~> 0.5.1' #last version of the gem 

私はルートを置く(route.rb):私は宝石(Gemfile)を加え

bar.html.erb
私はそのURLをターゲットとするリンクを持っています:

<%= link_to '.docx', preview_path %> 

テンプレート(preview.docx.erb):

<h1>foobar</h1> 

コントローラで

foos_controller.rb):ただし

class FoosController < ApplicationController 
    respond_to :docx 

    #other code 

    def preview 
    respond_to do |format| 
     format.docx do 
     render docx: 'foobar', filename: 'preview.docx' 
     end 
    end 
    end 
end 

、Iエラーが発生しました:

ActionController::UnknownFormat

このエラーを解決するにはどうすればよいですか?

マイ設定:
RoRのv4.2.4
Rubyは


Also, there is an open github issue for this/similar topicをv2.2.3p173。


更新:@kajalojhaが述べたように、respond_with/Class-Level respond_toは個々の宝石に削除されているので、私installed the responders gemは、しかし、私は同じエラーを取得します。

答えて

0

私はそれを理解しました。私はformat: 'docx'をルートに追加しました。

Note: as @kajalojha mentioned, respond_with/Class-Level respond_to has been removed to an individual gem, so I installed the responders gem .

downloadロジックを作成しましょう。

Gemfile

gem 'responders' 
gem 'htmltoword', '~> 0.5.1' 

routes.rbを

get 'download' => 'foos#download', format: 'docx' #added format 

foos_controller.rb

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> 

download.docx.erbそして、私は、ダウンロードロジックをトリガするために、いくつかのリンクを追加しました:これで "Loremのイプサム" とbar.docxファイルをダウンロードします

<%= link_to 'Download bar.docx', foo_download_path %> 

0

respond_toは、個々の宝石にレール4.2から削除されたので、私は..あなたがフォーマッタ宝石を使用することをあなたは下記のリンクを見ることができ、さらに詳しくは

をお勧めします。

Why is respond_with being removed from rails 4.2 into it's own gem?

+0

どの宝石を使用するかおすすめできますか? – Vucko

+0

フォーマッタ宝石.. –

+0

私はそれを見つけようとしていますが、運がありません。リンクを投稿できますか? – Vucko

0

あなたはカラカルレールを試したことがありますか?あなたはそれを見つけることができますhere

0

私は今年初めにこの同じ機能をアプリで構築しなければならず、また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 

私はその後遊びに来て2「ビュー」のファイルを持っています。最初は、私のメソッドビューファイル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 } 

、私は私のWordファイルの肉が含まれている別のファイルname_of_my_word_template.docx.hamlを持っている:このファイルは、次のコードが含まれています。

%h4 Header 
%h5 Subheader 
%div= local_var.method 
%div Some other content 
%div More content 
%div Some footer content 

誰かがmy_app.com/controller_name/download.docxにヒットしたら、Wordファイルが生成されてダウンロードされます。

これが起こるようにするために、私は私のroutes.rbファイル内のダウンロード方法のためのルートを持っている:これは私のためによく働いていると私はあなたを役に立てば幸い長い返信用

resources :model_name do 
    member do 
    get :download 
    end 
end 

謝罪を...この問題で!

+0

同じ問題です。どのRoRバージョンを使用しましたか?このプロジェクトに 'レスポンダー'宝石を入れましたか? – Vucko

+0

私はRails 4.2.6を使用しており、プロジェクトに応答者の宝石を含めています。ごめんなさい。 –

+0

私は 'format: 'docx''部分をルートに追加することでそれを解決することができました。私の答えをチェックし、私が逃した場合は何かを追加する気軽に:) – Vucko

関連する問題