Top > 開発ガイド > コンポーネント開発Tips集 > リンクとフォーム
リンクとフォーム
対象バージョン
当ドキュメントはRubricks-0.6.x向けです。
リンク
Railsにはハイパーリンクを表示するために以下の2つのHelperタグが用意されています。
- link_to
- link_to_remote
Rubricksではこれに加えて
- link_to_main
- link_to_self
というHelperタグを提供しています。これらは「link_to_remote」を継承する形で実装されており、更新対象のDOM-IDをRubricksのメインコンテンツに自動的にセットしています。
例えば、「Sample」コンポーネント-「Index」コントローラ-「show」メソッドを対象としてメインコンテンツのみを更新するハイパーリンクを生成したい場合、以下の記述が考えられます。
1. <%= link_to_remote 'リンク', :url => {:controller => '/sample/index', :action => 'show'}, :update => 'rubricks_partition_m' %>
2. <%= link_to_main 'リンク', :url => {:controller => '/sample/index', :action => 'show'} %>
同様の挙動はlink_toを利用して下記のように記述することも可能ですが、メインコンテンツ以外のレンダリングを行う分オーバーヘッドは増加します。
3. <%= link_to 'リンク', :controller => '/sample/index', :main => '_show' %>
また、ブロック内のビューにlink_to_selfタグを記述すると、そのブロックが更新対象になります。
4. <%= link_to_self 'このブロックを更新', :url => {:controller => '/sample/index', :action => 'show'} %>
フォーム
Railsにはフォームを表示するために以下の2つのHelperタグが用意されています。
- form_tag
- form_remote_tag
Rubricksではこれに加えて
- form_main_tag
- form_self_tag
というHelperタグを提供しています。これは「form_remote_tag」を継承する形で実装されており、更新対象のDOM-IDをRubricksのメインコンテンツに自動的にセットしています。
例えば、「Sample」コンポーネント-「Index」コントローラ-「update」メソッドを対象としてメインコンテンツのみを更新するフォームを生成したい場合、以下の記述が考えられます。
1. <%= form_remote_tag :url => {:controller => '/sample/index', :action => 'update'}, :update => 'rubricks_partition_m' %>
2. <%= form_main_tag :url => {:controller => '/sample/index', :action => 'update'} %>
form_tagを利用して下記のように記述することも可能ですが、link_toと同様にオーバーヘッドが掛かるのに加えて、updateアクションの処理内で適切にリダイレクトする必要があります。
3. <%= form_tag :controller => '/sample/index', :action => 'update' %> ==================================================================== def update ...... redirect_to :controller => '/sample/index', :main => '_main' end
また、ブロック内のビューにform_self_tagタグを記述すると、そのブロックが更新対象になります。
4. <%= form_self_tag 'このブロックを更新', :url => {:controller => '/sample/index', :action => 'show'} %>
ページネーション
Railsにはページネーション用のリンクを表示するために以下のHelperタグが用意されています。
- pagination_links
Rubricksではこれに加えて
- pagination_remote_links(paginator, options, html_options)
- pagination_remote_links(args)
- pagination_remote_functions(paginator, function, html_options)
- pagination_remote_functions(args)
というHelperタグを提供しています。これは「link_to」に対する「link_to_remote」及び「link_to_functions」のような位置付けと思って頂いて構いません。
<%= pagination_remote_links(@pages, :params => {:update => 'rubricks_partition_m', :url => {:controller => '/sample/index', :action => 'show'}}) %>
<%= pagination_remote_links({:paginater => @pages, :options => {:params => {:update => 'rubricks_partition_m', :url => {:controller => '/sample/index', :action => 'show'}}}, :str_next => '次に進む', :str_prev => '前に戻る') %>
<%= pagination_remote_functions(@pages, 'alert(this.name);') %>
<%= pagination_remote_functions({:paginater => @pages, :function => 'alert(this.name);', :str_next => '次に進む', :str_prev => '前に戻る') %>
