rubyのcgiライブラリでメタタグを記述するには

このQ&Aのポイント
  • 最近勉強し始めた者が、rubyのcgiライブラリを使ってメタタグを記述する方法を知りたい。
  • HTMLにはメタ(meta)タグを最初に書き込む必要があるが、cgiライブラリを使った際の記述方法がわからない。
  • 検索しても詳しい情報が得られず、どう記述すればいいのか悩んでいる。ご存知の方、教えてください。
回答を見る
  • ベストアンサー

rubyのcgiライブラリでメタタグを記述するには

rubyを最近勉強し始めた者です。cgiプログラムを書こうと考えています。 rubyにはcgiを記述するのに便利なライブラリというものがあり、 これを活用したいと考えているのですが、問題にぶつかりました。 HTMLにはメタ(meta)タグを最初に書き込みますが、cgiライブラリを使った際にはどう書くかがよくわかりません。 検索しても書いてあるページが見当たらず、悩んでいます。 例えば下記のプログラムでは、metaタグはどう記述すればいいのでしょうか。 (もちろんcgi.head内というのはわかりますが……) ご存知の方、よろしくお願いします。 cgi = CGI.new("html4Tr") cgi.out("charset" => "UTF-8") do cgi.html("PRETTY" => true) do cgi.head do cgi.title do "タイトル" end end + cgi.body do end end end

  • Ruby
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

cgi.head do の後ろに cgi.meta ({'http-equiv' => 'Content-Type','content' => "text/html; charset=UTF-8"})+ でどうでしょうか? 以下のキーワードで検索すると、サンプルプログラムが何個か見つかりますよ。 ruby cgi meta

souitirou1
質問者

お礼

回答ありがとうございます。 教えていただいた方法でうまくいきました。 それから、サンプルになるプログラムも見つかりました。 http://wirepuller.org/record/hh/?src これで作成が進みます。ありがとうございます。

関連するQ&A

  • RubyでCGIが動きません。

    RubyでCGIを作ってApacheを使ってアプリの練習をしようとしていますが、CGIのお置き場所かApacheの設定かCGIの書き方が悪いのかIEで動かすとCGIの内容を中途半端に実行して下記のようになってしまいます。 #!/ruby/bin/ruby -Ks print "Content-type: text/html\n\n" print "" print "" print "" print "" print "こんにちは、Ruby!" print "" CGIのソースは #!/ruby/bin/ruby -Ks print "Content-type: text/html\n\n" print "<html><head>" print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">" print "<title>RubyでCGI</title></head>" print "<body>" print "こんにちは、Ruby!" print "</body></html>" 一番簡単なプログラムだと思うのですが、どこがいけないのでしょうか。ちなみにOSはVISTAです。 ちょっと気になるのはApacheMonitorServerが動かないこともあります。タイトルにはErrorと出ますが、メッセージでは「この操作を正しく終了しました」と出ます。 ちなみにApacheは動いてます。LocalHostで確認できました。 どなたかどうすれば良いのか教えて頂けないでしょうか。 よろしくお願いします。結構長い時間悩んでいます。

    • 締切済み
    • CGI
  • CGI.pmのヘッダー部分のHTMLタグの書き出し順序は制御できないの

    CGI.pmのヘッダー部分のHTMLタグの書き出し順序は制御できないのですか? 以下のようにHTML書出しをテストしていますが、プログラムソース内の-title=>''の記述位置を変えても<title></title>タグが<head>タグ直下にきてしまいます。また-title=>''をコメントアウトしても<title>Untitled Document</title>と書き出されてしまいます。添付のスクリーンショットをご覧下さい。 <meta http-equiv="Content-Type"~(略)~charset=UTF-8"> <title>new set title</title> 文字化けの影響があるので、この順番で出力したいのです。 ##----プログラムソース-----------## use CGI; my $meta_etc = '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'.'<title>new set title</title>'; print $q->header(-charset=>'utf-8'); print $q->start_html( -encoding=>'utf-8', -lang =>'ja', -head=>$meta_etc, #-title=>'cgi.pm set title', #-head=>$q->meta({-http_equiv => 'Content-Type', -content => 'text/html; charset=UTF-8' }), -meta=>{'keywords'=>'pharaoh,secret,mummy', 'description'=>'this website is best' }, -style=>[ { -src => '/styles/layout.css'}, { -src => '/styles/print.css',-media => 'print'} ], -script=>[ { -type => 'text/javascript',-src => '/javascript/utilities10.js' }, { -type => 'text/ecmascript',-src => '/javascript/utilities219.js'} ], ); print $q->h1("ok"); print $q->end_html; exit; ##--end ---##

    • ベストアンサー
    • Perl
  • XREA MySQL CGI Ruby エラー

    XREAの無料サーバーに設定されたMySQLのデータベースをCGIとして設定したRubyからアクセスしたいのですが、require 文を入れると Internal Server Error が出ます。(コメントアウトすると動きます) よろしくお願いします。 #!/usr/local/bin/ruby require 'mysql' #↑ここが問題と思われます puts 'Content-Type: text/html' puts '' puts '<!doctype html>' puts '<html>' puts '<head>' puts '<meta charset="utf-8">' puts '<title>TEST</title>' puts '</head>' puts '<body>' puts 'Hello World' #↓requireでエラーになるのでコメント中 #my = Mysql.new('127.0.0.1', 'id', 'password', 'dbname') #res = my.query('SELECT * from T_test') #res.each do |row| # puts row[0] #end puts '</body>' puts '</html>'

    • ベストアンサー
    • CGI
  • rubyのmarkabyの出力の件です

    rubyでmarkabyの使用するとhtmソースが普通のエディタでみれません どうしたら表示できるかをよろしくお願いいたします。 =====make_htm.rb/================================================ require 'rubygems' require 'markaby' html = Markaby::Builder.new do head { title 'マイホームページ'} body do h1 "ようこそ" b "項目" ul do li "ライン1" li "ライン2" li "ライン3" end end end puts html =====make_htm.rb/end================================================ を実行すると <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> <title>& #12510;& #12452;& #12507;& #12540;& #12512;& #12506;& #12540;& #12472;</title> </head> <body> <h1>& #12424;& #12358;& #12371;& #12381;</h1> <b>& #38917;& #30446;</b> <ul> <li>& #12521;& #12452;& #12531;& #65297;</li> <li>& #12521;& #12452;& #12531;& #65298;</li> <li>& #12521;& #12452;& #12531;& #65299;</li> </ul> </body> と出力されます(改行はあとで付加しました&と#の間にわざとスペースいれてます) これをブラウザでみればちゃんとみえるのですが htmのソースの状態で <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> <title>マイホームページ</title> </head> <body> <h1>ようこそ</h1> <b>項目</b> <ul> <li>ライン1</li> <li>ライン2</li> <li>ライン3</li> </ul> </body> と出力するにはどうしたらいいでしょうか str = html.to_s puts Iconv.conv('Shift_JIS','UTF-8',str) とやってみても変わりませんでした。 よろしくご教授おねがいいたします。

    • ベストアンサー
    • Ruby
  • Dreamweaverのメタタグについておしえてください

    DreamweaverCS3でキーワードを入れると、</head>の下に挿入されるのですが、これでいいのでしょうか? よろしくお願いします。 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>タイトル</title> </head> <meta name="keywords" content="キーワード,キーワード," /> <meta name="description" content="説明文" /> <body> </body> </html>

  • CGIにJAVAの記述をしたい

    CGIプログラムの中にJAVAの記述をしたいのですが うまくいきません。 ヒアドキュメントでくくってみましたが 500エラーで表示されませんでした。 どう記述すれば動いてくれるんでしょうか? print "Content-type: text/html\n\n"; print "<html><head>\n"; print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=Shift_JIS\">\n"; print "<link rel=\"stylesheet\" type=\"text/css\" href=\"$loaddir/style.css\">\n"; print "<title>$title</title>\n"; ここに下記のJAVA文を入れたいです。 print "</head>\n"; 記入したいJAVA <SCRIPT language="JavaScript"> <!-- document.write('<img src="momo/123.cgi?' + 'javaref=' + document.referrer + '" width=1 height=1>'); // --> </SCRIPT>

    • 締切済み
    • CGI
  • 【ruby】クラスCGIを改造したい

    #!/usr/local/bin/ruby require 'cgi' require 'kconv' headers={ "status"=>"OK", "type"=>"text/html; charset=utf-8" } cgi=CGI.new hoge=cgi['arg'] cgi.out(headers){Kconv.toutf8(hoge)} 上記はcgiはクエリパラメータargに与えた文字列がUTF-8で表示される 物の基本骨格として記しました。 実際に作りたい物は、もう少し複雑で、cgi.outのブロックに渡す部分 は、ケースにより複数あります。 そこで、毎回ブロックに渡す部分をKconv.toutf8でくくるのは、如何な ものかと思い、CGIクラスそのものを改造して、 cgi.out(headers){hoge} と記述しても、UTF-8で出力されるようにしたいのですが、やり方が解 りません。 CGIクラスのoutメソッドをオーバーライドするのかなぁ? と思うのですが、オーバーライドってやった事が無いので、 手がかりがつかめません。 お手ほどきの、よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • cgiのプログラム

    前自分が質問したアカウントの管理についてなんですが、今度はそれをcgiプログラムに書き換えたいと思っています。そこで、ログインのページはできたのですが、認証できたかどうかのページがうまくいきませんでした。そこでなんですが、どう書き換えたらよいのでしょうか?? お願いします! ログインのページと認証のページのプログラムを両方書いておきます。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>ログインページ</title> </head> <body> ログインしてください。<br> 自分のアカウント名とパスワードを入力してください。<br> <form method="GET" action="http://verify.cgi"> アカウント名: <input type="text" name="an"> <br> パスワード:<input type="password" name="pw" size="15"> <input type="submit" value="ログイン"> </form> </body> </html> #!/usr/local/bin/ruby print "Content-type: text/html; charset=euc-jp\n\n" $KCODE = "e" require "CGI" cgi = CGI.new account = cgi["an"] password = cgi["pw"] hash_account = {} fo = open("accountData.txt", "r") i = 0 while(line = fo.gets) ary = line.split hash_account[ary[0]] = ary[1] i = i + 1 end fo.close account = gets.chop password = gets.chop print <<EOS <HTML> <head> <meta http-equiv="content-type" content="text/html; charset=EUC-JP"> <title>アカウント認証</title> </head> <body bgcolor="skyblue"> EOS if (hash_account[account] == password) print "ようこそ、" #{account}"さん。それではゲームを始めましょう。" elsif hash_account.has_key? account print "パスワードが間違っているようです。" else print #{account}"というアカウントはありません。" end print <<EOS </body> </html> EOS 動作環境はruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]になります。 よろしく、お願いします。

    • ベストアンサー
    • CGI
  • htmlでCGIを作動させたい

    PC用とモバイル用のサイトを作成しています。 http://www.abc.com/ にアクセスすれば自動で振り分けするよう index.cgiというCGIスクリプトを作成しました。 それをindex.html内に組み込んで自動でCGIを呼び出すことは可能でしょうか? 何故わざわざindex.htmlをつくるかというと、METAタグで検索エンジンに引っかかるようにする為です。 <!--#exec cmd="index.cgi"--> を入れてみましたが、振り分け先リンクが表示されるだけで自動では飛んでくれませんでした。 以下、index.htmlのソースです。 <html> <head> <title>ああああ</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta name="description" content="ああああ"> </head> <!--#exec cmd="index.cgi"--> </html> 拙い文章&初歩的な質問で申し訳御座いません。 何卒よろしく御願い致します。

    • ベストアンサー
    • CGI
  • rubyに関する質問です。

    rubyに関する質問です。 require 'open-uri' open("uri") do |f| 5.times do print f.gets end end これを実行すると <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>繧ェ繝悶ず繧ァ繧ッ繝域欠蜷代せ繧ッ繝ェ繝励ヨ險?隱・Ruby</title> Complete(0) このように日本語のところだけ文字化けしてしまうのですが、どのようにすれば文字化けがなおるのでしょうか?

    • ベストアンサー
    • Ruby

専門家に質問してみよう