0

これは、css を使用したテーブルのスタイリングに関する以前の質問にリンクしています。私が追加せず、これがエラーであることに気付いていないのは、ページをhtmlとしてレンダリングするときに、いくつかのjqueryが利用されていることです。

wicked_pdf / wkhtml - 背景色を変更するために tr.odd と tr.even を使用する css テーブルのサポート

このためのjqueryは次のとおりです。

$(document).ready(function(){
  $('tbody tr:even').addClass('stripe');
  $('tbody tr').hover(function(){
    $(this).addClass('stripeHover');
  }, function(){
    $(this).removeClass('stripeHover');
  });
});

PDF ファイルをレンダリングしているため、ホバーは冗長であると想定しているため、これを次のように減らすことができます。

$(document).ready(function(){
  $('tbody tr:even').addClass('stripe');
});

これが私が使用しているwicked_pdf_helper.rbファイルです。アセット パイプラインでは、自分のファイルをパブリックで作成するつもりなのか、app/assets/javascripts で作成するつもりなのかわかりません。私の限られた理解と私の質問に答えるためにここを見ている + gem への変更を確認することから、Rails 2 -> 3 -> 3.1 -> 3.2 からの変更がすべてこれに影響を与えているようです。

私が使用した最新のヘルパーファイルは次のとおりです。

module WickedPdfHelper
  def wicked_pdf_stylesheet_link_tag(*sources)
    css_dir = Rails.root.join('public','stylesheets')
    sources.collect { |source|
      "<style type='text/css'>#{File.read(css_dir.join(source+'.css'))}</style>"
}.join("\n").html_safe
  end

  def pdf_image_tag(img, options={})
    image_tag "file:///#{Rails.root.join('public', 'images', img)}", options
  end

  def wicked_pdf_javascript_src_tag(jsfile, options={})
    #javascript_src_tag "file:///#{Rails.root.join('public','javascripts',jsfile)}", options
  end

  def wicked_pdf_javascript_include_tag(*sources)
    sources.collect{ |source| wicked_pdf_javascript_src_tag(source, {}) }.join("\n").html_safe
  end

  module Assets
    def wicked_pdf_stylesheet_link_tag(*sources)
      sources.collect { |source|
        "<style type='text/css'>#{read_asset(source+".css")}</style>"
  }.join("\n").html_safe
    end

    def wicked_pdf_image_tag(img, options={})
      image_tag "file://#{asset_pathname(img).to_s}", options
    end

    def wicked_pdf_javascript_src_tag(jsfile, options={})
      javascript_include_tag "file://#{asset_pathname(jsfile).to_s}", options
    end

    def wicked_pdf_javascript_include_tag(*sources)
      sources.collect { |source|
        "<script type='text/javascript'>#{read_asset(source+".js")}</script>"
  }.join("\n").html_safe
    end

    private

    def asset_pathname(source)
      if Rails.configuration.assets.compile == false
        File.join(Rails.public_path, asset_path(source))
      else
        Rails.application.assets.find_asset(source).pathname
      end
    end

    def read_asset(source)
      if Rails.configuration.assets.compile == false
        IO.read(asset_pathname(source))
      else
        Rails.application.assets.find_asset(source).to_s
      end
    end
  end
end

ファイルの以前のバージョンは次のとおりです。

module WickedPdfHelper
  def wicked_pdf_stylesheet_link_tag(*sources)
    options = sources.extract_options!
    if request.try(:format).to_s == 'application/pdf'
      #css_dir = Rails.root.join('public','stylesheets')
      css_dir = Rails.root.join('app','assets', 'stylesheets')
      refer_only = options.delete(:refer_only)
      sources.collect { |source|
        source.sub!(/\.css$/o,'')
        if refer_only
          stylesheet_link_tag "file://#{Rails.root.join('public','stylesheets',source+'.css')}", options
        else
          "<style type='text/css'>#{File.read(css_dir.join(source+'.css'))}</style>"
        end
      }.join("\n").html_safe
    else
      sources.collect { |source|
        stylesheet_link_tag(source, options)
      }.join("\n").html_safe
    end
  end

  # def wicked_pdf_stylesheet_link_tag(*sources)
  #   sources.collect { |source|
  #     "<style type='text/css'>#{Rails.application.assets.find_asset("#{source}.css")}</style>"
  #   }.join("\n").gsub(/url\(['"](.+)['"]\)(.+)/,%[url("#{wicked_pdf_image_location("\\1")}")\\2]).html_safe
  # end

  def pdf_image_tag(img, options={})
    if request.try(:format).to_s == 'application/pdf'
      image_tag "file://#{Rails.root.join('app', 'assets', 'images', img)}", options rescue nil
    else
      image_tag img.to_s, options rescue nil
    end
  end

  def wicked_pdf_javascript_src_tag(jsfile, options={})
    if request.try(:format).to_s == 'application/pdf'
      jsfile.sub!(/\.js$/o,'')
      javascript_src_tag "file://#{Rails.root.join('public','javascripts',jsfile + '.js')}", options
    else
      javascript_src_tag jsfile, options
    end
  end

  def wicked_pdf_javascript_include_tag(*sources)
    options = sources.extract_options!
    sources.collect{ |source| wicked_pdf_javascript_src_tag(source, options) }.join("\n").html_safe
  end
end

テンプレート (genie_help_base.pdf.erb) ファイルは次のとおりです。

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%#= wicked_pdf_stylesheet_link_tag    "application", :refer_only => true %>
    <%#= wicked_pdf_stylesheet_link_tag "application", :refer_only => true %>
    <%= wicked_pdf_stylesheet_link_tag "static_pages/genie_v23_help" %>    
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
<!--     <%#= render 'layouts/shim' %>  -->   
  </head>
  <body>
    <div class="container">
      <%= yield %>
      <%= debug(params) if Rails.env.development? %>
    </div>
  </body>
</html>

html のレイアウト テンプレート (genie_v23_help_base.html.erb) は次のとおりです。

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= stylesheet_link_tag    "application", media: "all" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
    <%= render 'layouts/shim' %>    
  </head>
  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <%= render 'static_pages/genie_v23_help/shared/help_header.html.erb' %>       
      <%= yield %>
      <%= render 'static_pages/genie_v23_help/shared/help_footer' %>
      <h4><strong>Did this show up in only the html on screen</strong></h4>
      <%= render 'layouts/footer' %>
      <%= debug(params) if Rails.env.development? %>
    </div>
  </body>
</html>

cssファイルはこちら

table {
  width: 90%;
  border: 1px solid #999999;
}

th, td {
  padding: 7px 10px 10px 10px;
}

th {
  border-bottom: 2px solid #111111;
  border-top: 1px solid #999999;
  font-size: 90%;
  letter-spacing: 0.1em;
  text-align: left;
  text-transform: uppercase;    
}

/*tr.even {
    background-color: #efefef;
}*/


.stripe { 
  background-color: #dddddd;
  /*color: #666666;*/
}

tr.stripeHover {
  background-color: #FFFACD;
}

tbody tr:hover {
    background-color: #FFFACD;
}

最後に、これがすべて呼び出されるコントローラーの show メソッド:

  def static_page
    respond_to do |format|
    format.html do
        render :template => show_page,
               :layout => 'genie_v23_help_base'
    end
    format.pdf do
        render :pdf => show_page,
               :layout => 'genie_v23_help_base.pdf.erb',
               :template => "#{show_page}.html.erb",
               :handlers => :erb,
               :disable_external_links => true,
               :disable_javascript => false,
               :show_as_html => params[:debug],
               :print_media_type => true
      end
    end
  end

そのため、現在jqueryストライピング機能を機能させることができません。

私はこれを機能させたいと思っています。これを実証するためにスタイルシートとjqueryを使用するRails 3.2.3の最新バージョンはないようです。 .

どこかのファイルで include ステートメントを使用する必要がありますか? もしそうなら、「アプリケーション」はどこですか?

ヘルパーの更新 (tobiashm 18 日前 Use precompiled assets if needed) で、「通常の」メソッドか Asset モジュールのメソッドかをどのように指定しますか? 以下をコメントアウトしないと、エラーが発生します。

def wicked_pdf_javascript_src_tag(jsfile, options={})
  #javascript_src_tag "file:///#{Rails.root.join('public','javascripts',jsfile)}", options
end

Rails 3.2+ に準拠するように javascript_src_tag を javascript_include_tag に変更しました。

def wicked_pdf_javascript_src_tag(jsfile, options={})
  javascript_include_tag "file:///#{Rails.root.join('public','javascripts',jsfile)}", options
end

このすべてを示すホストされたサンプル アプリ /app を持っている人はいますか?

概要 - css スタイリングを適用できるように、jquery を使用して HTML レンダリング ファイルにクラス名を設定し、PDF で css ゼブラ ストライピングを取得しようとしています。

前もってありがとう、マーク

4

1 に答える 1

0

あなたのPDFレイアウトは通常のものを使用しています

<%= javascript_include_tag "application" %>

いつ使用すべきか

<%= wicked_pdf_javascript_include_tag "application" %>
于 2012-06-18T16:00:27.440 に答える