Railsで削除確認のconfirmダイアログを出す

Rails2で記事一覧画面から直接記事を削除するような場合。

削除リンクをクリックすると「削除してよろしいですか?」が出てOKなら削除、キャンセルなら何もしない、というよくある処理。

テンプレート:

<%= link_to_remote("削除", :url => {:controller => "article", :action => "delete", :id => article},
  :update => "article_#{article.id}", :confirm => '削除してよろしいですか?') %>

出力:

<a href="#" onclick="if (confirm('削除してよろしいですか?')) { new Ajax.Updater('article_11', '/article/delete/11', {asynchronous:true, evalScripts:true}); }; return false;">削除</a>

TwitterのURLからstatusを抜き出す正規表現

tweetのURLからstatusを抜き出す正規表現を考えていた。

tweetのURLには幾つか種類があって基本的に次の4つの要素とその組み合わせのようだ。

  • 昔の書式:
    http://twitter.com//ysakaki/status/129076541425586176
  • #!が挟まる書式:
    http://twitter.com/#!/ysakaki/status/129076541425586176
  • statusじゃなくてstatusesな書式:
    http://twitter.com/#!/ysakaki/statuses/129076541425586176
  • 更にhttps対応した書式:
    https://twitter.com/#!/ysakaki/statuses/129076541425586176

Rubyで言うと下記で(\d+)の取得結果$4でstatusが取得できた。

tweet_url = "http://twitter.com/#!/ysakaki/status/129076541425586176"
tweet_url =~ /^http(s*):\/\/twitter.com\/(.*)\/(status|statuses)\/(\d+)$/ 
puts $4
129076541425586176

SUICA定期発券のバグに遭遇したかも(と思ったら操作の問題だった)

どうも、バグではないかと思う(断定はしないが)。

私は普段京王線→JR原宿駅の一ヶ月定期を使用している。それが、定期を更新した所他人の区間で更新されるという現象にぶちあたった。

具体的には山手線某駅→昭和島、となっている。昭和島という駅がどこかわからなくてググったくらいなので心当たりは無い。

某駅→(山手線)→浜松町駅→(東京モノレール)→昭和島駅、というルートらしい。

新規定期の場合乗り換え路線を指定したりする操作が必要だから、新規で誤操作はありえない。定期継続のパターンだろう。

継続操作時に自分では延長期間と利用開始日を選んだ記憶しかないのだが一体…。明日みどりの窓口へ行ってみる。

後日談

JRのみどりの窓口で調べてもらったのでご報告。新規定期扱いで某駅→(山手線)→浜松町駅→(東京モノレール)→昭和島駅というルートになっていたことを確認。

結果的に、日にちをさかのぼって本来ルートの定期券を再発行し、誤って引かれていたチャージ分を戻す処理をしていただいた。

色々詳細は省くけれど可能性としては
1.前の人が新規定期券を発行しようとして、ルート設定した所でやめてしまった
2.その後私がカードを差し込んだ。
3.画面が切り替わって「何ヶ月分の定期か」「何日から有効にするか」の画面になった(のできづかなかった)

という場合起こりうるのではないか、とのことだった。新規定期の場合は途中でカードを差すことが可能とのこと。私は定期新規作成の操作はしていないのは確実だが、最初に定期継続のボタンを選んでからスタートしたかどうか、区間が表示されたかは覚えていない。これは状況としては一致すると思う。

従って、バグではなく前の人と私との操作タイミングの問題だったと思う。私は前の人の画面が途中で残っていないという先入観があったから、注意を払っていなかった。おそらく一定時間操作がなければ前の人の操作はクリアされるはずがすかさず?カードを差し込んでしまったため、新規作成の続きに入ってしまったのではないだろうか。