2006-09-14

_ [rails] 久々に

RJS Template とか使ったら、すっかり忘れていた。script/console で遊んでるだけじゃダメだ。 とはいえ、さすがにちょっと触ってると思い出してきた。 やっぱり Rails は楽しいなぁ。

_ [javascript] td のグルーピング?

隣り合う(とも限らないけど) td をひとまとめにして当たり判定を、 という……要望?

<%= javascript_tag %Q{
  var classNameRegExp = new RegExp('^(?:foo|bar|baz)-[0-9]+$');
  var setClassNames = function(elem, className){
    if(elem && elem.cachedSiblings){
      elem.cachedSiblings.each(function(e){e.className = className});
    }
  }
  $$('td').each(function(td){
    var className = td.className;
    if(className && className.match(classNameRegExp)){
      td.cachedSiblings = $$('td.' + className);
      td.onmouseover = function(){setClassNames(td, 'hovering')};
      td.onmouseout = function(){setClassNames(td, 'gone')};
      td.onclick = function(){
        #{remote_function(:url => {:controller => "hoge", :action => "fuga"},
                               :with => "'id='+className")}
      }
    }
  })
} -%>

foo-1 とか bar-1 とかいう class が付いた td のクラス名をまとめて変えられる。 で、remote_function に渡す action とかを変える方法が分からないので、id で foo-1 とかを渡して、 アクションメソッド側で redirect_to とか。何だかな。

[]