RJS Template とか使ったら、すっかり忘れていた。script/console で遊んでるだけじゃダメだ。 とはいえ、さすがにちょっと触ってると思い出してきた。 やっぱり Rails は楽しいなぁ。
隣り合う(とも限らないけど) 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 とか。何だかな。