忍者ブログ
Since 14.Jan.2009:08:29 プログラミングと絵のブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


renderは部分テンプレートを読み込んで
出力の一部を別ファイルで作れるメソッドのこと。

基本的にViewはrender_to_stringと同じで文字列が作られる
Controllerはよく分からん

実はRails2.3で少し書くのが楽になった

Rails 2.3
  render @todo
  render @todos

Rails 2.2以前
  render :partial => 'todo', :object => @todo
  render :partial => 'todo', :collection => @todos

この二つが同じ意味。
元々:collectionはpartialの指定と、
ファイル内で使う変数名(collectionの単数形)を統一しないと機能しないから
当然といえば当然の修正

上のはどちらも コントローラ名/_todo.html.erbが呼ばれる
部分テンプレートにしたいファイルは「_」を付けると覚えておけばおk

ただし、:partialの指定と同じ名前にしておくのが無難
そして単数形にしておくと更に無難

ちなみに:collectionを渡すとeachみたいに使える

:locals => {symbol => object, ...}だとシンボルで指定した変数名に
値を入れて、部分テンプレートのファイル内で使用できる

:localsとか:objectで渡すと1回分だけ出力される


RJSについて

renderとは違うけどこっちも似たようなもんだから

RJSは.js.rjsという拡張子のファイルで使う記述方法
pageオブジェクトを使ってDOM操作ができる。

使い方は、scaffoldしたときにできるコントローラの一部を
使いたいアクションのところだけ

respond_to do |format|
  format.html
  format.xml { render :xml => @todos }
  format.js  <- ココを追加!
end

みたいにformat.jsを追加する
そうすると、そのアクションと同名の、例えばindexアクションなら、
index.js.rjsファイルが呼ばれる

RJSファイルの中ではpageオブジェクトを使って

page[:DOMのid名].replace_html "Hello, World!"

とすると指定したIDのDOM要素を入れ替えることができる
これはprototype.jsの$()メソッドを使用。

page.select("セレクタ"). ...

ならCSSのセレクタと同じ表記でDOMを指定することも可能
これはprototype.jsの$$()メソッド。

replace_htmlやinsert_htmlの引数は文字列だけでなく
ハッシュでオプションを与えることもできて、
renderみたいに

... .replace_html :url => todo

とすると、指定したDOM要素の中身が詳細画面になる
URLでいえば コントローラ名/todo.id かな

link_to_remoteで呼べば勝手にrjsファイルがデフォルトで呼ばれて、
画面遷移もなくすことができてウマウマです
PR

Comment
Name
Title
Mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
[47] [45] [44] [43] [42] [41] [40] [39] [38] [37] [36
«  Back :   HOME   : Next  »
カレンダー
04 2024/05 06
S M T W T F S
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 29 30 31
ブログ内検索
プロフィール
HN:
uguisu_an
年齢:
34
性別:
男性
誕生日:
1989/08/20
自己紹介:
基本的にテキトー
最新コメント
[10/01 くゆる]
[09/21 uguisu_an]
[09/17 mayigo]
[07/17 uguisu_an]
[07/15 shinh]
最新トラックバック
アクセス解析
フリーエリア
P R
忍者ブログ [PR]