Re: [心得] 一點 rails 雜項心得

看板Ruby作者 (godfat 真常)時間17年前 (2007/12/17 16:37), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《godfat (godfat 真常)》之銘言: : 4. 我不是很懂何謂 REST, 每次看到一堆超長的描述就懶得看... : 不過 respond_to 寫起來真的是很爽,可以同時處理一大群的 output. : 像是現在我寫了這個: : class ApplicationController < ActionController::Base : before_filter :restful_response : protected : def restful_response : template = "#{self.controller_name}/#{self.action_name}.xhtml.erb" : respond_to{ |format| : format.html{ render :template => template } : format.xhtml : format.xml{ render :template => template, :layout => false } : } : end : end : 這樣我的 xhtml/html/xml 都可以使用同樣的 template, 真是搞笑了,這個用起來大有問題 原本我是想寫成 after_filter, 卻會產生 double render 的問題 好吧,before_filter 總行吧?看似可行,實際上卻會造成 原本的 action 完全失效 :( 試了好多種方法,好像都不行,包括在裡面加上: self.send self.action_name.to_sym 查了半天,總算在這裡看到些解答: Render, Redirect, or... allow plugins to add further options http://www.ruby-forum.com/topic/125689 被加到 trac 裡面了: http://dev.rubyonrails.org/ticket/9953 我不知道他是哪一個正式版中可以用,至少手上的 2.0.1 可以用。 這是直接去看 source code 才發現的... 本來是想 monkey patch 過去 -_-b 所以以上的 restful_response 直接改名為 default_render 就可以了。 不過老實講,沒有 @default_render_chain 有點失望 -_-b 其實這也不是無解啦,一樣: def default_render @default_render_chain.each{ |renderer| rendered? = case renderer.class when Proc; renderer.call when Symbol; self.send renderer end return rendered? if rendered? } return render end 自己做也不困難 -- #!/usr/bin/ruby [露比] /Programming (Kn|N)ight/ 看板《Ruby》 # if a dog nailed extra legs that http://www.ptt.cc/bbs/Ruby/index.html # walks like an octopus, and Welcome ~Ruby@ptt~ # talks like an octopus, then ◢█◣ http://www.ruby-lang.org/ # we are happy to treat it as http://www.ruby-doc.org/ # if it were an octopus. http://www.rubyforge.org/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.218.90.242
文章代碼(AID): #17PZLOk3 (Ruby)
討論串 (同標題文章)
文章代碼(AID): #17PZLOk3 (Ruby)