これは、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 ゼブラ ストライピングを取得しようとしています。
前もってありがとう、マーク