• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

link_to 等のヘルパメソッドは sinatra 本体には含まれていませんが、 sinatra_more という gem が用意されています。

install

   1  % gem install sinatra_more

standalone 利用の場合

直接 Sinatra::Base に register してしまいましょう。

   1  require 'sinatra'
   2  ...
   3  require 'sinatra_more/markup_plugin'
   4  Sinatra::Base.register SinatraMore::MarkupPlugin
   5  ...
   6  get '/' do
   7    ...

クラス利用の場合

該当クラスで register します。

   1  require 'sinatra_more/markup_plugin'
   2  
   3  class Application < Sinatra::Base
   4    register SinatraMore::MarkupPlugin
   5  end

MarkupPlugin

link_to だけでなく、全56種(ver 0.3.33 現在)ものヘルパメソッドが利用できるようになります。 以下に、よく使いそうなものを抜粋します。

   1  link_to(*args, &block)
   2  stylesheet_link_tag(*sources)
   3  javascript_include_tag(*sources)
   4  image_tag(url, options={})
   5  image_path(src)
   6  escape_html(text)
   7  h!(text, blank_text = '&nbsp;')
   8  content_tag(*args, &block)
   9  tag(name, options={})
  10  input_tag(type, options = {})
  11  form_for(object, url, settings={}, &block)
  12  text_field_tag(name, options={})

詳細は lib/sinatra_more/markup_plugin/*.rb を確認して下さい。

その他のPlugin

sinatra_more gem には、 MarkupPlugin 以外にも RenderPlugin、WardenPlugin、MailerPlugin、RoutingPlugin といったプラグインが用意されています。 利用方法は MarkupPlugin の場合と同じで、 利用したいプラグイン名を列挙していきます。

   1  require 'sinatra_more/markup_plugin'
   2  require 'sinatra_more/render_plugin'
   3  Sinatra::Base.register SinatraMore::MarkupPlugin
   4  Sinatra::Base.register SinatraMore::RenderPlugin
   5  ...

各プラグインの代表的なメソッドを記載します。 例えば、RenderPlugin にはみんな大好きな "partial" が入ってたりしますので、しっかりチェック&register しましょう。

RenderPlugin

描画系プラグイン

   1  partial(template, options={})
   2  erb_template(template_path, options={})
   3  haml_template(template_path, options={})
   4  render_template(template_path, options={})

WardenPlugin

認証系プラグイン

   1  current_user
   2  authenticate_user!
   3  logged_in?
   4  authenticated?(&block)

MailerPlugin

メール関係?(使わないので未調査)

RoutingPlugin

ルーティング系プラグイン (named route?)

   1  map(*args, &block)
   2    # map(:accounts).to('/accounts/url')
   3    # map(:admin, :show).to('/admin/show/:id')
   4    # map(:admin) { |namespace| namespace.map(:show).to('/admin/show/:id') }

posted by Png maiha on Thu 4 Feb 2010 at 01:10

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry1704
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ