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
Contents
Sinatra で link_to を使う
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
ブログに数式を埋め込める数式コミュニティ