RJSテンプレートは、RubyコードからJavaScriptコードを生成 するための仕組みです。 今回は、RJSテンプレートの中でJavaScriptの条件分岐を 簡潔に記述するために、PrototypeHelperを拡張する方法を紹介します。

以下のようなファイルを作成して、config/initializersの下に 設置します(Rails 2.0以降の場合)

prototype_helper_ext.rb

   1  module ActionView
   2    module Helpers
   3      module PrototypeHelper
   4        class JavaScriptGenerator
   5          def if(condition, &block)
   6            page << "if(#{condition}){"
   7            block.call if block
   8            page << '}'
   9          end
  10  
  11          def elsif(condition, &block)
  12            page << "else if(#{condition}){"
  13            block.call if block
  14            page << '}'
  15          end
  16  
  17          def else(&block)
  18            page << "else{"
  19            block.call if block
  20            page << '}'
  21          end
  22        end
  23      end
  24    end
  25  end

これによって、こんな感じに条件分岐を記述できるようになります。

   1  render :update do |page|
   2    page.if "$$('#posts .post').length == 0" do
   3      page.remove 'posts'
   4    end
   5  end

最初から用意されててもいい気がする。

posted by Png genki on Sat 5 Jan 2008 at 16:49

不定期に小ネタを並べていくかもです。

  • エクスプローラで圧縮
    ファイル右クリック-送るで「圧縮(zip形式)フォルダ」

  • Adobe Acrobat Readerの読み上げ機能
    表示 - 読み上げ - 読み上げを起動
    表示 - 読み上げ -このページのみを読み上げる
    この機能、日本語のPDFではうまく起動しましせん。 試しにRailsRecepiのpdfを読ませてみたら、ネイティブだと分かるようなレベルか。ムズカシイ。

posted by Png satoko on Sat 5 Jan 2008 at 07:28
Contents
How To Use Conditional RJS
今日学んだTips
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
KingofSmack: Here also good reads for this mobile applicatio... '14-5
Spencer: You don't have to re-compile it, this version w... '14-4
staiano: Any chance we can get a recompile for 10.9? '14-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ