[前][次][番号順一覧][スレッド一覧]

rails:844

From: Hiroshi Takagi <gollum@h...>
Date: Sat, 31 Dec 2005 20:37:09 +0900
Subject: [rails:844] Re: ドロップダウンボックスからのページ遷移/RJS風味

高木宏@cuzic さんの#824 の質問を RJS template 風味で料理。

RJS template は、Rails 1.0 にははいってませんが Edge Rails で使えます。
gem Rails でも plugin を使えば利用できます。(←わたしはこれ)


On Fri, 23 Dec 2005 00:29:01 +0900
cuzic <tomoya@c...> wrote:

> rails をやっていると、java script と ruby と css と sql を
> 同時に勉強することになって、なかなか楽しい毎日です。
> 
> それはともかく、今 rails で ドロップダウンボックス(select タグ)から
> 一つを選択したら自動的に画面遷移をするというのを作ろうと
> しています。
> 参考:http://iswebmag.hp.infoseek.co.jp/sample005.html
> 
> こういうのを ruby on rails で作ろうとするときは、
> どうするのが定石なのでしょうか?

(snip)

:controller, :action でどんなことがしたいのかよくわかりませんが、
RJS template と observe_field で作るとこんな風なのができました。
たいしたことやってるわけではないのに、MVC に散らばって返ってわかりにくい
かな?(汗


[ テーブル locations ]

mysql> select * from locations;
+----+---------------+-----------------------------------+
| id | menu_opt      | url                               |
+----+---------------+-----------------------------------+
|  4 | Ruby site     | http://www.ruby-lang.org/ja/      |
|  5 | Ruby on Rails | http://www.rubyonrails.com/       |
|  6 | Rail ML forum | http://www.ruby-forum.com/forum/3 |
+----+---------------+-----------------------------------+

[ model : app/model/location.rb ]

class Location < ActiveRecord::Base
end 

[ controller : app/controllers/menu_controller.rb ]

class MenuController < ApplicationController
  model :location

  def index
  end

  def jump_to_option
    @location = Location.find(@params[:opt_id])
  end

end

[ view : app/views/menu/index.rhtml ]

<h1>
Select Option
</h1>

<%= @options = Location.find(:all)
    collection_select(:menu, :opt_id,
                      @options, :id, :menu_opt,
                      {:include_blank => true, :size => 10 } )
%>

<%= observe_field 'menu_opt_id',
      :url => { :action => 'jump_to_option' },
      :with => "'opt_id=' + escape(value)"
%>

[ RJS template : app/views/menu/jump_to_option ]

page.alert "Jump to #{@location.menu_opt}..."
page.redirect_to "#{@location.url}"  

-----------------------------------------------------------

一行もJavascript を書かずにできるかやってみたけど、

:with => "'opt_id=' + escape(value)"

あたりが、Javascript っぽくてちょとやだ(^^;;

RJS template には、:complete アクションしか記載できませんが、

・一度に複数のDOM elements を扱える。javascript_tag を書くことが減る。
・動きのシナリオが .rjs に集まって見通しがいい。

ので重宝してます。
RJSで できることはここらへんに。

http://caboo.se/doc/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator.html

-- 
Hiroshi Takagi <gollum@h...>



--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

       824 2005-12-22 16:29 [tomoya@c...         ] ドロップダウンボックスからのページ遷移  
       825 2005-12-22 16:53 ┣[gollum@h...         ]                                       
       826 2005-12-22 16:56 ┣[yu1@t...            ]                                       
       827 2005-12-23 01:00 ┃┗[tomoya@c...         ]                                     
->     844 2005-12-31 12:37 ┗[gollum@h...         ] Re: ドロップダウンボックスからのページ遷移/RJS風味