フジの月9ドラマ、「ビブリア古書堂の事件手帖」が終わった。最終回は史上最低の視聴率だったそうだ。
だが、flyman は面白く見られた。鎌倉の古本屋を舞台とした謎解きドラマだが、起きる事件の規模は小さい。剛力彩芽演じる本屋の主人、栞子さんの微笑んだ顔がいい。こぢんまり感がほんのり楽しいドラマだった。最初は「え?AKIRA?」と思ったが、案外悪くなかった。でも、一番良かったのは初回、かな。
2013年3月29日(金曜日)
2013年3月26日(火曜日)
剛力彩芽
2013年3月23日(土曜日)
花の時期になった
2013年3月16日(土曜日)
もう春の陽気
2013年3月15日(金曜日)
Ruby、DBI、OCI8、ODBC、Oracle …… さっぱり
2月5日のエントリーで、ruby で Oracle接続するテストスクリプトを書いた。
あれはちゃんと動いた。ところが、
require “rubygems”
require “dbi”
begin
conn = DBI.connect("DBI:ODBC:MyOracle”,"ユーザー名”,"パスワード")
rows = conn.select_all("select * from MyDB")
rows.each do |row|
処理
end
ensure
conn.disconnect if conn
end
これは動かない。select_all が機能しないのだ。
rows = conn.execute("select * from MyDB")
rows.each do |row|
処理
end
rows.finish
これは大丈夫。
よく分からない。
select_one、execute は動作するが、select_all は動作しない。でも、flymanは select_all が使いたい!
結局、
conn = DBI.connect("DBI:ODBC:MyOracle”,"ユーザー名”,"パスワード")
を
conn = DBI.connect("DBI:OCI8:MyOracle”,"ユーザー名”,"パスワード")
にすることで、select_all が使えるようになった。
結果オーライということで、これ以上の深入りはやめにした。どうせ理解できないだろうし。
2013年3月14日(木曜日)
渋谷駅
2013年3月6日(水曜日)
ajaxで、フォーカスを失ったときに処理をさせる
さらに、test01プロジェクトを書き換える。
app/views/welcome/index.html.erb はそのまま使う。
<%= text_field_tag :field1, :id => “field1″ %><BR/>
<%= text_field_tag :field2, :id => “field2″ %><BR/>
<div id="hint”></div>
app/assets/javascripts/application.js の内容を書き換える。
$(document).ready(function(){
$("#field1″).blur(function(){
if($(this).val().length>0){
$.ajax({
url: ‘/welcome/ajaxSample’,
type: ‘POST’,
datatype: ’script’,
timeout: 1000,
data: $(this),
error: function(){alert(’Server Error on ajax’)},
});
};
});
});
“blur” は、フォーカスを失ったとき、つまり field1 からカーソルが外へ出たときに実行される。
app/controllers/welcome_controller.rb に、"ajaxSample"アクションを追加する。
class WelcomeController < ApplicationController
略
def ajaxSample
@value = Time.now
end
end
新たに、app/views/welcome/ajaxSample.js.erb を作る。内容は以前のindex.js.erbとほぼ一緒だ。
$('#hint').html("<%= @value %>")
最後に、app/config/routes.rb に、
match "welcome/ajaxSample"
を追加しておく。
「:id => “field1″」な text_field_tag からフォーカスが別のフィールドやボタンに移ると、application.jsの「url: ‘/welcome/ajaxSample’」で指定されたアクションが実行され、ajaxSample.js.erbテンプレートにより、「<div id="hint”></div>」の値が書き換えられる。
実行するアクション(例では welcome_controllerのajaxSample)にロジックを書けば、入力値のチェックができる。これこそflymanがやりたかった事なのだ。
例えば、取引先コードを入れたら、取引先マスタを検索して取引先名称を表示する、とか。処理に時間が掛かるときは、timeoutの値を大きくすると良い。
前回のmouseoverなど、他のファンクションと組み合わせても良いだろう。
2013年3月5日(火曜日)
Rails3 でajax、マウスの動きを検知する
お茶の水駅 | |
東京駅 |
前回は ”:remote => true” を付けるだけでajaxなアプリになったよ、って話だった。
でも、やりたいことはソレじゃない。
ということで、前回のtest01プロジェクトを書き換える。
app/views/welcome/index.html.erb の内容を消去し、以下に入れ替える。
<%= text_field_tag :field1, :id => “field1″ %><BR/>
<%= text_field_tag :field2, :id => “field2″ %><BR/>
<div id="hint”></div>
入力項目2個と、ajaxで書き換えるエリア “hint” を指定している。
app/assets/javascripts/application.js に以下を追記する。
$(document).ready(function(){
$("#field1″).mouseover(function(){
$(’#hint’).html("Field1のバルーンヘルプ")
});
$("#field1″).mouseout(function(){
$(’#hint’).html("")
});
$("#field2″).mouseover(function(){
$(’#hint’).html("Field2のバルーンヘルプ")
});
$("#field2″).mouseout(function(){
$(’#hint’).html("")
});
});
“field1″ の mouseover 時に、"hint” エリアに文言を表示
“field1″ の mouseout 時に、"hint” エリアを消す
“field2″ の mouseover 時に、"hint” エリアに文言を表示
“field2″ の mouseout 時に、"hint” エリアを消す
という処理をしている。これで、view側の text_field_tag にマウスが乗ったかどうかを監視してくれる。
app/views/welcome/index.js.erb は不要だ。welcome/index アクションの中身も不要。
$(document).ready は、view画面表示が完了してからjavascriptを有効にするおまじないらしい。Javascriptをhtml内に書いているときには意味があるが、今回はファイルを分離しているので不要かも知れない。
入力欄にマウスを乗せると、ヒントが表示される。Windowsアプリでよくやる、バルーンヘルプ的な。
でも、本当にやりたいのはコレでもないんだよなぁ。
やっぱり、ajaxもjavascriptもさ?っぱり分からない。Rails3.2 + jQuery とかの解説書、ないかなぁ。
2013年3月2日(土曜日)
一日中、目がかゆい、鼻が詰まる
雨上がりの朝、久しぶりにウォーキングに出た。
が、予想に反して花粉は飛んでいたようで、目鼻が酷いことに。
すでにツバメが来ているようだ。
==============================================
ちょっとajaxの検討をしている。Ruby on Railsのソフトで、画面全体の更新なしで一部だけ書き換えたいのだが……
単純なajaxは次のようにして実現できる。
まず、railsのプロジェクトを作る。
# rails new test01 -O
テストプロジェクトなので、"-O"を付けてActiveRecordは利用しない設定にしている。
gemfileに、次のようにjsランタイムを追加する。
gem ‘therubyracer’
追加したら、cd test01のあと、
# bundle install
しておく。
コントローラーを生成する。
# rails generate controller welcome index
config/routes.rbの
# root :to => ‘welcome#index’
行頭の"#"を取ってアンコメントする
さらに、public/index.html を削除しておく。
app/views/welcome/index.html.erb の内容をすべて消去し、以下を記入する。
<%= link_to “更新”, {:action => “index"}, :remote => true %>
<div id="value”></div>
1行目は、"更新"ボタン。リンク先URLは"index"、つまり再表示になる。
:remote => true だけで、ajax (jQuery)対応になる。
2行目は、ajaxデータ表示用エリアのマークだ。
あらたに、app/views/welcome/index.js.erb を作り、以下を記入する。
$(’#value’).html(”<%= @value %>")
app/controllers/welcome_controller.rb の中で @value に値をセットすれば、それが表示されるようになる。
こんな感じだ。
def index
@value = Time.now
end
リンクをクリックするとページの書き換えなしに日時が書き換わるはずだ。
――でも、勿論やりたいことはこんな事じゃない。先は長い。
32 queries. 0.032 sec.
Powered by WordPress Module based on WordPress ME & WordPress