锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲高清综合,国产精品欧美久久久天天影视,久久国产色AV免费看http://www.shnenglu.com/cpunion/category/88.htmlAS/C/C++/D/Java/JS/Python/Rubyzh-cnMon, 19 May 2008 12:34:08 GMTMon, 19 May 2008 12:34:08 GMT60[RoR] Post/Get鍒嗘淳http://www.shnenglu.com/cpunion/archive/2006/09/17/12571.htmlqieziqieziSun, 17 Sep 2006 03:13:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/09/17/12571.htmlhttp://www.shnenglu.com/cpunion/comments/12571.htmlhttp://www.shnenglu.com/cpunion/archive/2006/09/17/12571.html#Feedback1http://www.shnenglu.com/cpunion/comments/commentRss/12571.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/12571.html涓銆佸墠璦

鍑轟簬鏁版嵁瀹夊叏鎬ц冭檻錛屾煇浜涚牬鍧忔ч摼鎺ュ簲璇ヤ嬌鐢╬ost璇鋒眰錛屾瘮濡備竴涓垹闄よ褰曠殑璇鋒眰銆?br />
闄や簡鑴氭湰紜浠ュ錛屾湇鍔$榪橀渶瑕乸ost楠岃瘉錛屽洜涓鴻剼鏈槸鍙互緇曡繃鐨勩傛兂鍍忎綘鐨勯〉闈笂鏈変竴涓垹闄ら摼鎺ワ紝鍙綔浜嗗鎴風鑴氭湰紜錛堣佺殑scaffold鐢熸垚浠g爜鏈夎繖闂錛夛紝琚玤oogle鎵懼埌浜嗭紝瀹冧竴涓姹傚氨浼氳浣犵殑鏁版嵁涓㈠け銆?br />
rails瀵逛簬榪欑被璇鋒眰鐨勫鐞嗭紝鏄氳繃verify鏂規硶錛岄粯璁ょ殑scaffold鐢熸垚浠g爜鏈夊涓嬪唴瀹癸細

聽聽#聽GETs聽should聽be聽safe聽(see聽http://www.w3.org/2001/tag/doc/whenToUseGet.html)
聽聽verify聽:method聽=>:post,:only聽=>聽[聽:destroy,:create,:update聽],
聽聽聽聽聽聽聽聽聽
:redirect_to聽=>聽{聽:action聽=>:list聽}

鍙湁post璇鋒眰鏃訛紝destroy鎵嶄細琚厑璁革紝濡傛灉鏄痝et錛屽氨浼氳閲嶅畾鍚戝埌list銆?br />
浜屻佸疄鐜?/b>

鎴戣嚜宸卞疄鐜頒簡涓涓猰ethod_dispatch錛屽綋璇鋒眰涓涓?test/a鏃訛紝濡傛灉鏄痝et錛屽垯浼氱洿鎺ユ墽琛孴estController#a錛涘鏋滄槸post錛屽垯浼氭墽琛孴estController#a_post錛宎_post搴旇鏄痯rotected錛岃繖鏍蜂笉浼氱洿鎺ユ毚闇茬粰瀹㈡埛錛実et/post灝變弗鏍煎尯鍒嗗紑鏉ヤ簡銆?br />
method_dispatch鐜板湪鏄洿鎺ュ疄鐜板湪ApplicationController涓殑錛屼唬鐮佸涓嬶細

class聽ApplicationController聽<聽ActionController::Base
聽聽protected
聽聽def聽self
.method_dispatch(*methods)
聽聽聽聽before_filter聽
:do_method_dispatch,:only聽=>聽methods.flatten.map(&:to_sym)
聽聽end

聽聽private
聽聽def聽do_method_dispatch
聽聽聽聽
if聽request.post?&&聽respond_to?("#{action_name}_post")
聽聽聽聽聽聽
eval("#{action_name}_post")
聽聽聽聽聽聽
return聽false
聽聽聽聽end
聽聽end
end

鐢變簬ApplicationController閲岄潰鐨勬柟娉曚細琚瓙綾葷戶鎵垮埌錛屾墍浠ュ繀欏諱弗鏍煎鐞嗚闂駭鍒?br />
浣跨敤濡備笅錛?br />
class聽TestController聽<聽ApplicationController
聽聽method_dispatch聽
:a

聽聽def聽
index
聽聽end

聽聽def聽a
聽聽聽聽render聽
:text聽=>'get聽a'
聽聽end
聽聽def聽b
聽聽聽聽render聽
:text聽=>'get聽b'
聽聽end
聽聽protected
聽聽def聽a_post
聽聽聽聽render聽
:text聽=>'post聽a'
聽聽end
聽聽def聽b_post
聽聽聽聽render聽
:text聽=>'post聽b'
聽聽end
end

娉ㄦ剰a_post錛宐_post瑕佽淇濇姢璧鋒潵闃叉鐩存帴璋冪敤銆?br />
index.rhtml閲岄潰婕旂ず浜嗕嬌鐢╣et鍜宲ost鐨勬儏鍐碉細

<%=聽link_to聽"Get聽a",:action聽=>'a'%>
<%=聽link_to聽"Post聽a",聽{:action聽=>'a'},聽{:post聽=>聽true}聽%><br聽/>

<%=聽link_to聽"Get聽b",:action聽=>'b'%>
<%=聽link_to聽"Post聽b",聽{:action聽=>'b'},聽{:post聽=>聽true}聽%><br聽/>

rails鍦ㄥ鐞嗘湁:post => true鍙傛暟鐨刲ink_to鏃訛紝鐢熸垚鐨勪唬鐮佸涓嬶細

<a聽href="/test/a"聽onclick="var聽f聽=聽document.createElement('form');
聽聽聽聽聽聽 this.parentNode.appendChild(f);聽f.method聽=聽'POST';聽f.action聽=聽this.href;聽f.submit();return聽false;"
>Post聽a</a>

緇忔祴璇曚笂闈唬鐮佸伐浣滄儏鍐佃壇濂斤紝浣跨敤get璁塊棶/test/a鏃訛紝鏄劇ずget a錛涗嬌鐢╬ost璁塊棶鏃訛紝鏄劇ずpost a銆備嬌鐢╣et璁塊棶/test/b鏃訛紝鏄劇ずget b錛涗嬌鐢╬ost鏃訛紝鏄劇ずget b錛屽洜涓篵騫舵病鏈変嬌鐢╩ethod_dispatch銆?br />
涓夈佸簲鐢?/b>

涓嬮潰鐨刾osts_controller.rb鏄痵caffold鐢熸垚鐨勶細

class聽PostsController聽<聽ApplicationController
聽聽def聽
index
聽聽聽聽list
聽聽聽聽render聽
:action聽=>'list'
聽聽end

聽聽
#聽GETs聽should聽be聽safe聽(see聽http://www.w3.org/2001/tag/doc/whenToUseGet.html)
聽聽verify聽:method聽=>:post,:only聽=>聽[聽:destroy,:create,:update聽],
聽聽聽聽聽聽聽聽聽
:redirect_to聽=>聽{聽:action聽=>:list聽}

聽聽def聽list
聽聽聽聽
@post_pages,@posts=聽paginate聽:posts,:per_page聽=>10
聽聽end

聽聽def聽show
聽聽聽聽
@post=聽Post.find(params[:id])
聽聽end

聽聽def聽new
聽聽聽聽
@post=聽Post.new
聽聽end

聽聽def聽create
聽聽聽聽
@post=聽Post.new(params[:post])
聽聽聽聽
if@post.save
聽聽聽聽聽聽flash[
:notice]聽='Post聽was聽successfully聽created.'
聽聽聽聽聽聽redirect_to聽
:action聽=>'list'
聽聽聽聽
else
聽聽聽聽聽聽render聽
:action聽=>'new'
聽聽聽聽end
聽聽end

聽聽def聽edit
聽聽聽聽
@post=聽Post.find(params[:id])
聽聽end

聽聽def聽update
聽聽聽聽
@post=聽Post.find(params[:id])
聽聽聽聽
if@post.update_attributes(params[:post])
聽聽聽聽聽聽flash[
:notice]聽='Post聽was聽successfully聽updated.'
聽聽聽聽聽聽redirect_to聽
:action聽=>'show',:id聽=>@post
聽聽聽聽
else
聽聽聽聽聽聽render聽
:action聽=>'edit'
聽聽聽聽end
聽聽end

聽聽def聽destroy
聽聽聽聽Post
.find(params[:id]).destroy
聽聽聽聽redirect_to聽
:action聽=>'list'
聽聽end
end

鍙互鐪嬪埌錛屽畠娣誨姞浜唙erify錛屼絾action榪囧錛岄渶瑕佸湪verify涓淮鎶や竴浠藉搴旀柟娉曞悕錛岀◢涓嶇暀紲炲氨瀹規槗鍑虹幇婕忔礊銆?br />
鎴戞妸瀹冧慨鏀瑰涓嬶細

class聽PostsController聽<聽ApplicationController
聽聽method_dispatch聽
:new,:edit,:destroy

聽聽def聽
index
聽聽聽聽list
聽聽聽聽render聽
:action聽=>'list'
聽聽end

聽聽def聽list
聽聽聽聽
@post_pages,@posts=聽paginate聽:posts,:per_page聽=>10
聽聽end

聽聽def聽show
聽聽聽聽
@post=聽Post.find(params[:id])
聽聽end

聽聽def聽new
聽聽聽聽
@post=聽Post.new
聽聽end

聽聽def聽edit
聽聽聽聽
@post=聽Post.find(params[:id])
聽聽end

聽聽def聽destroy
聽聽聽聽render聽
:inline聽=><<-EOS
聽聽聽聽聽 Are you sure?
聽聽聽聽聽聽
<%=聽link_to聽"Yes",聽{},:post聽=>聽true聽%>
聽聽聽聽聽聽
<%=聽link_to聽"No",:action聽=>'edit', :id => params[:id]%>
聽聽聽聽EOS
聽聽end

聽聽protected
聽聽def聽destroy_post
聽聽聽聽Post
.find(params[:id]).destroy
聽聽聽聽redirect_to聽
:action聽=>'list'
聽聽end
聽聽def聽edit_post
聽聽聽聽
@post=聽Post.find(params[:id])
聽聽聽聽
if@post.update_attributes(params[:post])
聽聽聽聽聽聽flash[
:notice]聽='Post聽was聽successfully聽updated.'
聽聽聽聽聽聽redirect_to聽
:action聽=>'show',:id聽=>@post
聽聽聽聽
else
聽聽聽聽聽聽render聽
:action聽=>'edit'
聽聽聽聽end
聽聽end
聽聽def聽new_post
聽聽聽聽
@post=聽Post.new(params[:post])
聽聽聽聽
if@post.save
聽聽聽聽聽聽flash[
:notice]聽='Post聽was聽successfully聽created.'
聽聽聽聽聽聽redirect_to聽
:action聽=>'list'
聽聽聽聽
else
聽聽聽聽聽聽render聽
:action聽=>'new'
聽聽聽聽end
聽聽end
end

鐩稿簲鍦幫紝榪橀渶瑕佹妸new.rhtml涓殑action浠巆reate淇敼鍒皀ew錛屾妸edit.rhtml涓殑action浠巙pdate淇敼鍒癳dit銆?br />
榪欐牱鐨勪慨鏀規妸蹇呴』浣跨敤post璇鋒眰鐨刟ction闅愯棌璧鋒潵錛岃岀浉搴旂殑get鎿嶄綔鏄笉淇敼鎴栧垹闄よ褰曠殑錛屽鏋滀互post璇鋒眰錛屾墠浼氳嚜鍔ㄨ皟鐢ㄨ繖浜涗繚鎶ょ殑鏂規硶銆?br />

qiezi 2006-09-17 11:13 鍙戣〃璇勮
]]>
[Ruby] Ruby AOPhttp://www.shnenglu.com/cpunion/archive/2006/09/16/12539.htmlqieziqieziSat, 16 Sep 2006 01:46:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/09/16/12539.htmlhttp://www.shnenglu.com/cpunion/comments/12539.htmlhttp://www.shnenglu.com/cpunion/archive/2006/09/16/12539.html#Feedback1http://www.shnenglu.com/cpunion/comments/commentRss/12539.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/12539.html
鍦ㄥ叾瀹冭璦閲屽疄鐜癆OP鐨勭‘姣旇緝楹葷儲錛宩ava瑕佺敤鍒板姩鎬乸roxy錛屽鏋滄槸C錛嬶紜錛岄櫎浜嗕粠婧愮爜涓婁慨鏀硅繕鐪熸病濂藉姙娉曪紝aspectc灝辨槸榪欎箞鍋氱殑銆傞偅涔坮uby閲岄潰濡備綍瀹炵幇鍛紵

鐢變簬ruby鏄姩鎬佽剼鏈璦錛岃繍琛屾湡鍙互鎶婁竴涓柟娉曟敼鍚嶏紝涔熷彲浠ユ瀯閫犱竴涓瓧絎︿覆鍔ㄦ佺敓鎴愭柟娉曪紝閭d箞瀹炵幇榪欎釜灝變笉鏄毦浜嬩簡銆?br />
module聽ExecuteBefore
聽聽def聽self
.included(base)
聽聽聽聽base
.extend(ClassMethods)
聽聽end

聽聽module聽ClassMethods
聽聽聽聽def聽execute_before(before_method
,*methods)
聽聽聽聽聽聽methods
.flatten.map(&:to_sym).eachdo|method|
聽聽聽聽聽聽聽聽alias_method聽
"#{method}_old".to_sym,聽method
聽聽聽聽聽聽聽聽class_eval聽
<<-eval_end
聽聽聽聽聽聽聽聽聽聽def聽
#{method}(*args)
聽聽聽聽聽聽聽聽聽聽聽聽#{before_method}(*args)
聽聽聽聽聽聽聽聽聽聽聽聽#{method}_old(*args)

聽聽聽聽聽聽聽聽聽聽end
聽聽聽聽聽聽聽聽eval_end
聽聽聽聽聽聽end
聽聽聽聽end
聽聽end
end

浣跨敤鏃跺彧闇瑕佸湪綾婚噷闈nclude榪欎釜妯″潡灝辮浜嗭紝鐩稿綋浜巑ixin鐨勫姛鑳姐?br />
class聽TestController聽<聽ApplicationController

聽聽def聽
index
聽聽聽聽a(
1)
聽聽聽聽b(
1,2)
聽聽聽聽c(
1,2,3)
聽聽聽聽render聽
:text聽=>'hello'
聽聽end

聽聽protected
聽聽def聽
log(*args)
聽聽聽聽puts聽
"log:聽#{args.map(&:to_s).join(',聽')}"
聽聽end

聽聽def聽a(a)
聽聽end

聽聽def聽b(a
,b)
聽聽end

聽聽def聽c(a
,b,c)
聽聽end

聽聽include聽ExecuteBefore
聽聽execute_before聽
:log,:a,:b,:c
end

娉ㄦ剰錛岀敱浜庝嬌鐢╡xecute_before鏃跺悗闈㈠嚑涓柟娉曞繀欏昏鏈夊畾涔夛紝鎵浠ュ繀欏繪斁鍦ㄥ悗闈紝鍚﹀垯灝變細鍑洪敊銆?br />

qiezi 2006-09-16 09:46 鍙戣〃璇勮
]]>
[RoR] Rails unittest涓涓皬bughttp://www.shnenglu.com/cpunion/archive/2006/09/16/12536.htmlqieziqieziSat, 16 Sep 2006 01:32:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/09/16/12536.htmlhttp://www.shnenglu.com/cpunion/comments/12536.htmlhttp://www.shnenglu.com/cpunion/archive/2006/09/16/12536.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/12536.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/12536.html
development_pgsql:
聽聽adapter
:聽postgresql
聽聽database
:聽myproject_development
聽聽username
:聽postgres
聽聽password
:

development_mysql
:
聽聽adapter
:聽mysql
聽聽database
:聽myproject_development
聽聽username
:聽root
聽聽password
:

development
:
聽聽development_mysql

test
:
聽聽adapter
:聽postgresql
聽聽database
:聽myproject_test
聽聽username
:聽postgres
聽聽password
:

production
:
聽聽development

姝e父榪愯娌′粈涔堥棶棰樸傚悗鏉ュ彂鐜板湪榪愯rake test浣滃崟鍏冩祴璇曟椂浼氭姤閿欙紝鎶婃嫹璐濊繃鏉ュ氨娌℃湁闂銆備笉榪噐ubyonrails.com涓婁笉鍏佽鍖垮悕鎻愪氦bug錛岃繕鐪熼夯鐑︺?br />
鍙﹀鍙戠幇config.active_record.schema_format = :ruby閰嶇疆涓嬶紝postgresql鐨則imestamp瀛楁榛樿鍊糲urrent_timestamp涓嶈兘姝g‘澶嶅埗鍒版暟鎹簱銆傜粡媯鏌ュ畠鏄嬌鐢╠b:schema:dump澶嶅埗涓嬫暟鎹簱妯″紡錛屽啀浣跨敤db:schema:load鐢熸垚嫻嬭瘯鏁版嵁搴撴ā寮忕殑錛岃繖涓ā鍧椾負浜嗗悇鏁版嵁搴撶粺涓錛屼細鍘繪帀閭d簺涓嶄竴鑷寸殑榛樿鍊箋傝В鍐沖姙娉曟槸璁劇疆config.active_record.schema_format = :sql銆?img src ="http://www.shnenglu.com/cpunion/aggbug/12536.html" width = "1" height = "1" />

qiezi 2006-09-16 09:32 鍙戣〃璇勮
]]>
[RoR] 淇update_attribute(s)鏇存柊鍏ㄩ儴瀛楁鐨勯棶棰?/title><link>http://www.shnenglu.com/cpunion/archive/2006/08/26/11712.html</link><dc:creator>qiezi</dc:creator><author>qiezi</author><pubDate>Fri, 25 Aug 2006 18:10:00 GMT</pubDate><guid>http://www.shnenglu.com/cpunion/archive/2006/08/26/11712.html</guid><wfw:comment>http://www.shnenglu.com/cpunion/comments/11712.html</wfw:comment><comments>http://www.shnenglu.com/cpunion/archive/2006/08/26/11712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/cpunion/comments/commentRss/11712.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cpunion/services/trackbacks/11712.html</trackback:ping><description><![CDATA[<span id="j3xxnpz" class="postbody">榪欐槸鍓嶆鏃墮棿鏈変漢璁ㄨ榪囩殑闂錛?<br /></span> <table cellspacing="1" cellpadding="3" width="90%" align="center" border="0"> <tbody> <tr> <td> <span id="93r9lzh" class="genmed"> <b>浠g爜:</b> </span> </td> </tr> <tr> <td class="code"> <br />order = Order.find(1) <br />order.update_attribute(:status, 'finished') <br /></td> </tr> </tbody> </table> <span id="pj9tttt" class="postbody"> <br />鍋囧畾orders琛ㄦ湁10涓瓧孌碉紝浣犲彧鎯蟲洿鏂板叾涓竴涓紝浣哸ctive record浼氱敓鎴愪竴涓洿鏂板叏閮ㄥ瓧孌電殑SQL璇彞錛屽亣瀹氬叾涓竴涓瓧孌靛奸暱搴︽槸20K錛岃繖涓礋鎷呭彲鑳戒細鏈変簺閲嶃?<br /><br />鎴戝皾璇曡В鍐寵繖涓棶棰橈紝鍐欎簡涓畝鍗曠殑鎻掍歡錛?<br /></span> <table cellspacing="1" cellpadding="3" width="90%" align="center" border="0"> <tbody> <tr> <td> <span id="p9ptz39" class="genmed"> <b>浠g爜:</b> </span> </td> </tr> <tr> <td class="code"> <br />module ActiveRecord <br />聽 class Base <br />聽 聽 def update_attribute(name, value) <br />聽 聽 聽 update_attributes(name => value) <br />聽 聽 end <br /><br />聽 聽 def update_attributes(new_attributes) <br />聽 聽 聽 return if new_attributes.nil? <br />聽 聽 聽 attributes = new_attributes.dup <br />聽 聽 聽 attributes.stringify_keys! <br />聽 聽 聽 self.attributes = attributes <br />聽 聽 聽 update(attributes) <br />聽 聽 end <br /><br />聽 聽 private <br />聽 聽 聽 def update(attrs = nil) <br />聽 聽 聽 聽 connection.update( <br />聽 聽 聽 聽 聽 "UPDATE #{self.class.table_name} " + <br />聽 聽 聽 聽 聽 "SET #{quoted_comma_pair_list(connection, attributes_with_quotes(false, attrs))} " + <br />聽 聽 聽 聽 聽 "WHERE #{self.class.primary_key} = #{quote(id)}", <br />聽 聽 聽 聽 聽 "#{self.class.name} Update" <br />聽 聽 聽 聽 ) <br />聽 聽 聽 聽 <br />聽 聽 聽 聽 return true <br />聽 聽 聽 end <br /><br />聽 聽 聽 def attributes_with_quotes(include_primary_key = true, attrs = nil) <br />聽 聽 聽 聽 (attrs || attributes).inject({}) do |quoted, (name, value)| <br />聽 聽 聽 聽 聽 if column = column_for_attribute(name) <br />聽 聽 聽 聽 聽 聽 quoted[name] = quote(value, column) unless !include_primary_key && column.primary <br />聽 聽 聽 聽 聽 end <br />聽 聽 聽 聽 聽 quoted <br />聽 聽 聽 聽 end <br />聽 聽 聽 end <br />聽 end <br />end <br /></td> </tr> </tbody> </table> <span id="3rp3hff" class="postbody"> <p> <br />attributes_with_quotes鍑芥暟鐨勫弬鏁版悶榪欎箞澶嶆潅錛屽師鍥犳槸鎴戞兂鍗充究鏄敤榪欐浠g爜鏇挎崲搴撻噷闈㈢殑閮ㄥ垎錛屼篃涓嶅獎鍝嶅師鏈変唬鐮佺殑姝e父鍔熻兘銆?<br /><br />鍙互綆鍗曟祴璇曚竴涓嬩笂闈㈢殑渚嬪瓙錛屽畠鐢熸垚鐨凷QL璇彞浼氱畝媧佸緢澶氾紝澶ф鏄繖鏍峰瓙錛?<br />UPDATE orders SET "status" = 'finished' WHERE id = 1<br /><br /><strong>宸插彂鐜扮殑BUG鍜屼慨澶嶏細<br /></strong><br /><strong>1銆佹病鏈夎皟鐢╲alidation (by cookoo)銆?/strong>鐢變簬鍘熸湁浠g爜璋冪敤save錛岃宻ave琚鐩栨垚鏈夐獙璇佺殑浠g爜錛屾墍浠ュ叿鏈夐獙璇佸姛鑳姐傝В鍐沖姙娉曟槸澧炲姞涓孌典唬鐮侊細</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <span style="COLOR: #000000">module聽ActiveRecord<br />聽聽module聽ValidationsFix<br />聽聽聽聽</span> <span style="COLOR: #0000ff">def</span> <span style="COLOR: #000000">聽self.append_features(base)聽</span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000">聽:nodoc:</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #000000">聽聽聽聽聽聽super<br />聽聽聽聽聽聽base.class_eval聽do<br />聽聽聽聽聽聽聽聽alias_method聽:update_attributes_without_validation,聽:update_attributes<br />聽聽聽聽聽聽聽聽alias_method聽:update_attributes,聽:update_attributes_with_validation<br />聽聽聽聽聽聽end<br />聽聽聽聽end<br /><br />聽聽聽聽</span> <span style="COLOR: #0000ff">def</span> <span style="COLOR: #000000">聽update_attributes_with_validation(new_attributes)<br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">聽new_attributes.nil?<br />聽聽聽聽聽 attributes = new_attributes.dup<br />聽聽聽聽聽 attributes.stringify_keys!<br />聽聽聽聽聽聽self.attributes聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽attributes<br /><br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">聽valid?<br />聽聽聽聽聽聽聽聽update_attributes_without_validation(attributes)<br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">else</span> <span style="COLOR: #000000"> <br />聽聽聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">聽false<br />聽聽聽聽聽聽end<br />聽聽聽聽end<br />聽聽end<br />end<br /><br />ActiveRecord::Base.class_eval聽do<br />聽聽include聽ActiveRecord::ValidationsFix<br />end</span> </div> <p>綆鍗曟祴璇曢氳繃銆?/p> </span><img src ="http://www.shnenglu.com/cpunion/aggbug/11712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cpunion/" target="_blank">qiezi</a> 2006-08-26 02:10 <a href="http://www.shnenglu.com/cpunion/archive/2006/08/26/11712.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[ROR] &:id榪欑鐢ㄦ硶http://www.shnenglu.com/cpunion/archive/2006/07/11/9688.htmlqieziqieziTue, 11 Jul 2006 07:40:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/07/11/9688.htmlhttp://www.shnenglu.com/cpunion/comments/9688.htmlhttp://www.shnenglu.com/cpunion/archive/2006/07/11/9688.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/9688.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/9688.html
class Symbol
聽 def to_proc
聽聽聽 Proc.new { |*args| args.shift.__send__(self, *args) }
聽 end
end

瀹冩墿灞曞嚭榪欑鐢ㄦ硶錛?br />
(1..5).map(&:to_s)

map鍘熸湰鏄鎺ュ彈涓涓猙lock鍙傛暟錛屾櫘閫氱殑鐢ㄦ硶鏄細

(1..5).map{|e| e.to_s}

鎴栬咃細

proc = Proc.new{|e| e.to_s}
(1..5).map(&proc)

涓婇潰榪欎釜(1..5).map(&:to_s)鐢ㄦ硶鍙互鎷嗘垚3姝ユ潵瑙i噴錛?br />sym = :to_s
proc = Proc.new{|*args| args.shift.send(sym, *args)}
(1..5).map(&proc)

鏈変釜鐤戦棶錛岀粡榪噛anping.jia瑙i噴錛宮ap(&:to_s)鍥犱負鍑虹幇浜?amp;絎﹀彿錛屾墍浠?to_s浼氭墽琛宼o_proc鏂規硶錛岀劧鍚庝笌&涓璧峰悎鎴?amp;proc浜ょ粰map澶勭悊銆傝櫧鐒惰寰楅氾紝涓嶈繃鎴戞昏寰楄繖涓В閲婁腑錛?amp;榪欎釜絎﹀彿鍋氫簡2嬈″伐浣滐紝鏄惁鍚堢悊錛?br />
榪欑鐢ㄦ硶鍘熸湰鏄疪uby Extensions Project鍙戞槑鐨勶紝鍦≧oR涓綔浜嗙偣淇敼銆傚師鏉ョ殑鐗堟湰鏄細

class Symbol
聽聽聽 def to_proc
聽聽聽聽聽 proc { |obj, *args| obj.send(self, *args) }
聽聽聽 end
end

瀹冧嬌鐢?涓弬鏁版潵鍒嗗嚭涓涓弬鏁幫紝鑰孯oR鐗堟湰鍒欎嬌鐢╯hift鍒嗗嚭鏉ャ?br />

鍒氭墠鍙堟兂浜嗕竴涓嬶紝yanping.jia鐨勮В閲婂簲璇ユ槸鍚堢悊鐨勶紝瑙i噴鍣ㄧ湅鍒?amp;:id鏃訛紝鍏堜細鍒ゆ柇鏄惁鏄竴涓柟娉曡皟鐢紝濡傛灉鏄垯闇瑕佹妸:id杞垚涓涓猵roc銆傚惁鍒欏氨鏄娉曢敊璇簡銆?img src ="http://www.shnenglu.com/cpunion/aggbug/9688.html" width = "1" height = "1" />

qiezi 2006-07-11 15:40 鍙戣〃璇勮
]]>
[ROR] 淇鈥滀嬌鐢≒OST鏂規硶鏃?閫氳繃URL鍙傛暟鏀瑰啓_session_id鏃犳晥鈥濈殑闂http://www.shnenglu.com/cpunion/archive/2006/07/03/9346.htmlqieziqieziMon, 03 Jul 2006 15:58:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/07/03/9346.htmlhttp://www.shnenglu.com/cpunion/comments/9346.htmlhttp://www.shnenglu.com/cpunion/archive/2006/07/03/9346.html#Feedback1http://www.shnenglu.com/cpunion/comments/commentRss/9346.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/9346.html
浣跨敤Flash 8鎻愪緵鐨凢ileReference鍙互鏂逛究鍦頒竴嬈¢夋嫨澶氫釜鏂囦歡涓婁紶錛屼笉榪囬櫎浜嗗湪IE涓婁互澶栵紝鍏跺畠嫻忚鍣ㄤ笂鐨勯兘浼氬嚭鐜癈ookie涓庢祻瑙堝櫒涓嶄竴鑷寸殑闂銆?br />
瑙e喅鍔炴硶錛? 鐩存帴鐨勫仛娉曞氨鏄湪涓婁紶鏃訛紝闄勫姞涓涓猻ession_id鍦║RL涓婏紝鍦ㄦ湇鍔$澶勭悊鏃朵嬌鐢ㄨ繖涓猄ession銆?br />
鍦≧ails涓紝鍙互鎶奯session_id=xxxx闄勫姞鍦║RL涓娿備笉榪囨祴璇曠殑緇撴灉鏄紝闄勫姞鐨剆ession_id鍙湁鍦℅ET璇鋒眰鏃舵墠姝e父錛孭OST璇風ず鏃朵細琚拷鐣ャ?br />
鐭ラ亾浜嗚繖涓鐐癸紝鍙渶瑕佸鎵綠ET鍜孭OST璇鋒眰澶勭悊鐨勫樊鍒備篃璐逛簡涓鐣懆鎶橈紝鎵嶅彂鐜伴棶棰樺嚭鍦╝ctionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb閲屻?br />
鍙渶瑕佸湪POST鏃朵篃澶勭悊涓涓婾RL鍙傛暟鍗沖彲銆傜敱浜庡畠鏄氳繃read_query_params鏂規硶鏉ュ垎寮澶勭悊鐨勶紝鎵浠ヨ鍦≒OST璇鋒眰鏃訛紝璋冪敤涓涓媟ead_query_params(:get)錛屽茍鎶婄粨鏋滃悎騫躲備唬鐮佸涓嬶細

@params.merge!(CGI.parse(read_query_params(:get))) if method == :post || method == :put

榪欒鍔犲埌initialize_query鏂規硶灝鵑儴鍗沖彲銆傜敱浜庡師鏉ョ殑鏂規硶鍙兘榪斿洖浜咢params錛屾墍浠ヤ篃鍔犱竴琛孈params鍦ㄧ粨灝撅紝浠ュ厤閫犳垚涓嶅繀瑕佺殑楹葷儲銆?img src ="http://www.shnenglu.com/cpunion/aggbug/9346.html" width = "1" height = "1" />

qiezi 2006-07-03 23:58 鍙戣〃璇勮
]]>
[RoR] 瀹炵幇涓涓猘uto_redirect_tohttp://www.shnenglu.com/cpunion/archive/2006/05/20/7434.htmlqieziqieziFri, 19 May 2006 18:33:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/05/20/7434.htmlhttp://www.shnenglu.com/cpunion/comments/7434.htmlhttp://www.shnenglu.com/cpunion/archive/2006/05/20/7434.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/7434.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/7434.html
鎴戦亣鍒扮殑涓涓棶棰樻槸錛屽綋浣跨敤Ajax鏇存柊欏甸潰灞閮ㄥ唴瀹規椂錛宻ession鍐呭宸茬粡榪囨湡錛岃繖鏃墮渶瑕佹暣涓〉闈㈣煩杞埌鐧誨綍欏甸潰銆?br />
鐩存帴璋冪敤redirect_to浼氫嬌灞閮ㄥ唴瀹規樉紺烘垚鐧誨綍欏甸潰錛屽畠鏄湪HTTP澶撮噷鍐欏叆閲嶅畾鍚戝弬鏁版潵瀹炵幇鐨勩傚湪鎴戣繖閲岀殑鐗規畩鎯呭喌涓嬶紝姝g‘鐨勫仛娉曟槸璁╁畠鎵ц涓涓寘鍚湪<script>鏍囪涓殑鑴氭湰錛屽湪鑴氭湰涓洿鏀圭獥鍙ocation鍊兼潵璺寵漿銆?br />
涓嶈繃RoR涓嬌鐢ˋjax鏃訛紝浼氭牴鎹?update鍙傛暟鏉ュ喅瀹氭槸浣跨敤Updater榪樻槸Request銆傚鏋滀嬌鐢║pdater鏂瑰紡錛屽垯搴旇繑鍥炰竴孌電函鑴氭湰錛涘鏋滄槸Request鏂瑰紡錛屽簲榪斿洖涓孌靛寘鎷湪<script>鏍囪涓殑鑴氭湰錛涘鏋滄槸鏅氭柟寮忥紝灝卞簲璇ヤ嬌鐢ㄥ師鏈夌殑redirect_to鍑芥暟浜嗐傚洜涓烘湇鍔$鏃犳硶鍖哄垎浣跨敤鐨勬槸鍝鏂瑰紡鏉ヨ姹傦紝鎵浠ョ畝鍗曠殑鍋氭硶鏄瘡涓姹傞兘闄勫姞涓涓弬鏁扮敤鏉ュ尯鍒嗭紝涓嶅姞鍙傛暟鍒欐槸鏅氳姹傛柟寮忋?br />
涓轟簡杈懼埌榪欎釜鐩殑錛屾垜淇敼浜唒rototype_helper涓殑remote_function鍑芥暟銆傝繖涓嚱鏁版牴鎹紶閫掕繘鏉ョ殑鍙傛暟鏉ュ喅瀹氫嬌鐢≧equest鎴栨槸Updater錛屾垜灝卞湪榪欓噷涓嬫墜錛?br />
聽聽聽聽聽聽def聽remote_function(options)
聽聽聽聽聽聽聽聽javascript_options聽
=聽options_for_ajax(options)

聽聽聽聽聽聽聽聽update聽
=''
聽聽聽聽聽聽聽聽
if聽options[:update]聽and聽options[:update].is_a?Hash
聽聽聽聽聽聽聽聽聽聽update聽聽
=聽[]
聽聽聽聽聽聽聽聽聽聽update聽
<<"success:'#{options[:update][:success]}'"if聽options[:update][:success]
聽聽聽聽聽聽聽聽聽聽update聽
<<"failure:'#{options[:update][:failure]}'"if聽options[:update][:failure]
聽聽聽聽聽聽聽聽聽聽update聽聽
='{'+聽update.join(',')聽+'}'
聽聽聽聽聽聽聽聽elsif聽options[:update]
聽聽聽聽聽聽聽聽聽聽update聽
<<"'#{options[:update]}'"
聽聽聽聽聽聽聽聽end

聽聽聽聽聽聽聽聽function聽
=聽update.empty??
聽聽聽聽聽聽聽聽聽聽
"new聽Ajax.Request("聽:
聽聽聽聽聽聽聽聽聽聽
"new聽Ajax.Updater(#{update},聽"
聽聽聽聽
聽聽聽聽聽聽聽聽url_options聽
=聽options[:url]
聽聽聽聽聽聽聽聽ajax_options聽
=聽options[:update]聽?聽{:ajax聽=>'update'}聽:聽{:ajax聽=>'request'}
聽聽聽聽聽聽聽聽url_options聽
=
聽url_options.merge(ajax_options)
聽聽聽聽聽聽聽聽url_options聽
=聽url_options.merge(:escape聽=>false)聽if聽url_options.is_a?聽Hash
聽聽聽聽聽聽聽聽function聽
<<"'#{url_for(url_options)}'"
聽聽聽聽聽聽聽聽function聽
<<",聽#{javascript_options})"

聽聽聽聽聽聽聽聽function聽
="#{options[:before]};聽#{function}"if聽options[:before]
聽聽聽聽聽聽聽聽function聽
="#{function};聽#{options[:after]}"聽聽if聽options[:after]
聽聽聽聽聽聽聽聽function聽
="if聽(#{options[:condition]})聽{聽#{function};聽}"if聽options[:condition]
聽聽聽聽聽聽聽聽function聽
="if聽(confirm('#{escape_javascript(options[:confirm])}'))聽{聽#{function};聽}"if聽options[:confirm]

聽聽聽聽聽聽聽聽
return聽function
聽聽聽聽聽聽end

鏈夌孩鑹茬殑2琛屾槸鎴戞坊鍔犵殑錛岀敱浜庤繖涓紪杈戝櫒鐨勫師鍥狅紝娌℃湁鏄劇ず鎴愭暣琛岀孩鑹層傝繖2琛岀殑浣滅敤鏄垽鏂槸鍚︽湁:update鍙傛暟錛岀敤瀹冩潵鍐沖畾鏄坊鍔燼jax=update榪樻槸ajax=request銆?br />
鐜板湪鍙互瀹炵幇涓涓畝鍗曠殑auto_redirect_to浜嗭細

聽聽def聽auto_redirect_to(method,聽url)
聽聽聽聽
case聽method
聽聽聽聽when聽
'request'
聽聽聽聽聽聽request_redirect_to(url)
聽聽聽聽when聽
'update'
聽聽聽聽聽聽update_redirect_to(url)
聽聽聽聽
else
聽聽聽聽聽聽redirect_to(url)
聽聽聽聽end
聽聽end
聽聽
聽聽def聽request_redirect_to(url)
聽聽聽聽render聽:update聽
do|page|
聽聽聽聽聽聽page.redirect_to(url)
聽聽聽聽end
聽聽end
聽聽
聽聽def聽update_redirect_to(url)
聽聽聽聽render聽:inline聽
=><<-EOS
聽聽聽聽聽聽
<script聽language="javascript">
聽聽聽聽聽聽
<%=
聽聽聽聽聽聽聽聽render聽:update聽
do|page|
聽聽聽聽聽聽聽聽聽聽page.redirect_to(
"#{url_for(url)}")
聽聽聽聽聽聽聽聽end
聽聽聽聽聽聽
%>
聽聽聽聽聽聽
</script>
聽聽聽聽EOS
聽聽end

浣跨敤helper鏂瑰紡浣垮畠鑳藉琚玦nclude鍒癆pplicationController涓氨琛屼簡銆?br />
涓轟簡涓嶅拰鍙傛暟緇戝緱澶錛岃繖閲屾妸method浣滀負鍙傛暟鐢辮皟鐢ㄨ呬紶鍏ャ?br />
浣跨敤鏂規硶錛屼互Login Engine涓轟緥錛屽畠鍦╝ccess_denied涓鐞嗚煩杞傚湪ApplicationController涓噸鍐欒繖涓嚱鏁幫細

聽聽聽聽def聽access_denied
聽聽聽聽聽聽auto_redirect_to(
params[:ajax],聽:controller聽=>"/user",聽:action聽=>"login")
聽聽聽聽聽聽
false
聽聽聽聽end聽聽

鐜板湪鍙互嫻嬭瘯浜嗐傝姹傚彲浠ユ槸鏅氱殑錛堣秴閾炬帴錛夛紝Updater鏂瑰紡錛堣姹傚埌涓涓狣IV閲岋級錛孯equest鏂瑰紡錛岀幇鍦ㄩ兘鑳藉璺寵漿鍒版紜〉闈€?br />
ajax鍙傛暟閫氳繃hack搴撲唬鐮佹潵瀹炵幇錛屽浜庝嬌鐢ㄨ呮潵璇村熀鏈笂鏄忔槑鐨勩?br />

qiezi 2006-05-20 02:33 鍙戣〃璇勮
]]>
[RoR] 鍦≧oR涓皟鐢?Net webservicehttp://www.shnenglu.com/cpunion/archive/2006/05/14/7138.htmlqieziqieziSun, 14 May 2006 12:08:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/05/14/7138.htmlhttp://www.shnenglu.com/cpunion/comments/7138.htmlhttp://www.shnenglu.com/cpunion/archive/2006/05/14/7138.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/7138.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/7138.html
using聽System;
using聽System.Web;
using聽System.Web.Services;
using聽System.Web.Services.Protocols;

[WebService(Namespace聽
="http://tempuri.org/")]
[WebServiceBinding(ConformsTo聽
=聽WsiProfiles.BasicProfile1_1)]
publicclass聽Service聽:聽System.Web.Services.WebService
{
聽聽聽聽[WebMethod]
聽聽聽聽
publicstring聽HelloWorld(string聽name)聽{
聽聽聽聽聽聽聽聽
return"Hello,聽"+聽name;
聽聽聽聽}
聽聽聽聽
}

鍦≧oR欏圭洰閲岋紝娣誨姞app/apis/test_api.rb錛?br />
class聽TestApi聽<聽ActionWebService::API::Base
聽聽api_method聽:HelloWorld,聽:expects聽
=>聽[{:name聽=>聽:string}],聽:returns聽=>聽[:string]
end

榪欐槸RoR閲岄潰閫氱敤鐨剋ebservice鍏冧俊鎭弿榪般?br />
娣誨姞app/controllers/test_controller.rb:

class聽TestController聽<聽ApplicationController
聽聽web_client_api聽:test,聽:soap,聽
"http://localhost/test/Service.asmx",聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽:namespace聽
=>"http://tempuri.org/",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽:soap_action_base聽
=>"http://tempuri.org",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽:driver_options
=>{:default_encodingstyle聽=>聽SOAP::EncodingStyle::ASPDotNetHandler::Namespace聽}

聽聽
def聽hello
聽聽聽聽render_text聽test.HelloWorld(
"Li聽Jie")
聽聽end
end

:soap_action_base閫夐」鏄竴涓慨琛ワ紝涓嶅姞榪欎釜閫夐」浼氫駭鐢烻OAPAction澶撮敊璇?br />
榪愯鏈嶅姟鍣紝鍦ㄦ祻瑙堝櫒涓闂?test/hello錛屽彂鐜板悕瀛椾負絀恒傜粡榪囬暱鏃墮棿璋冭瘯錛屽彂鐜?Net鍦ㄨВ鏋怱OAP娑堟伅浣撴椂錛屼笉鑳藉鐞嗚繖縐嶅懡鍚嶇┖闂達細

聽聽聽聽<n1:HelloWorld聽xmlns:n1="http://tempuri.org/"
聽聽聽聽聽聽聽聽soap:encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/">
聽聽聽聽聽聽
<namexsi:type="xsd:string">Li Jie</name>
聽聽聽聽
</n1:HelloWorld>

鎶妌1鍘繪帀灝辮浜嗐備笉榪囪繖閮ㄥ垎瀹炵幇鍦╮ubylib/soap/rpc/proxy.rb閲岄潰錛屽疄鍦ㄤ笉鏂逛究淇敼銆備負浜嗚榪欎釜嫻嬭瘯閫氳繃錛屾殏鏃跺仛浜嗙偣灝忎慨鏀癸細

聽聽def聽route(req_header,聽req_body,聽reqopt,聽resopt)
聽聽聽聽req_env聽
=聽::SOAP::SOAPEnvelope.new(req_header,聽req_body)
聽聽聽聽unless聽reqopt[:envelopenamespace].nil?
聽聽聽聽聽聽set_envelopenamespace(req_env,聽reqopt[:envelopenamespace])
聽聽聽聽end
聽聽聽聽reqopt[:external_content]聽
=聽nil
聽聽聽聽conn_data聽
=聽marshal(req_env,聽reqopt)
聽聽聽聽
if聽ext聽=聽reqopt[:external_content]
聽聽聽聽聽聽mime聽
=聽MIMEMessage.new
聽聽聽聽聽聽ext.each聽do聽
|k,聽v|
聽聽聽聽聽聽聽聽聽聽mime.add_attachment(v.data)
聽聽聽聽聽聽end
聽聽聽聽聽聽mime.add_part(conn_data.send_string聽
+"\r\n")
聽聽聽聽聽聽mime.close
聽聽聽聽聽聽conn_data.send_string聽
=聽mime.content_str
聽聽聽聽聽聽conn_data.send_contenttype聽
=聽mime.headers['content-type'].str
聽聽聽聽end

聽聽聽聽conn_data.send_string.gsub!(
/:n1/,聽'')
聽聽聽聽conn_data.send_string.gsub!(
/n1:/,聽''
)

聽聽聽聽conn_data聽
=聽@streamhandler.send(@endpoint_url,聽conn_data,
聽聽聽聽聽聽reqopt[:soapaction])
聽聽聽聽
if聽conn_data.receive_string.empty?
聽聽聽聽聽聽
return聽nil
聽聽聽聽end
聽聽聽聽unmarshal(conn_data,聽resopt)
聽聽end

鍔犵矖鐨?琛屾槸鎴戞坊鍔犵殑浠g爜錛屽媺寮哄彲浠ヨ瀹冨伐浣滐紝涓嶈繃鏄劇劧涓嶆槸姝g‘鐨勬柟娉曘?br />
涓嶇煡閬撴槸涓嶆槸.Net搴撻噷闈㈢殑BUG銆?img src ="http://www.shnenglu.com/cpunion/aggbug/7138.html" width = "1" height = "1" />

qiezi 2006-05-14 20:08 鍙戣〃璇勮
]]>
[RoR] 鑴氭湰妯℃嫙RJS鍒鋒柊欏甸潰http://www.shnenglu.com/cpunion/archive/2006/05/13/7087.htmlqieziqieziSat, 13 May 2006 15:49:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/05/13/7087.htmlhttp://www.shnenglu.com/cpunion/comments/7087.htmlhttp://www.shnenglu.com/cpunion/archive/2006/05/13/7087.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/7087.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/7087.html
婕旂ず欏甸潰鐩存帴鍦ㄦ祻瑙堝櫒涓鐪嬨?br />
婕旂ず涓嬭澆

qiezi 2006-05-13 23:49 鍙戣〃璇勮
]]>
[RoR] 鐢╦avascript鑴氭湰妯℃嫙涓涓猘ctionhttp://www.shnenglu.com/cpunion/archive/2006/05/12/7046.htmlqieziqieziFri, 12 May 2006 15:41:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/05/12/7046.htmlhttp://www.shnenglu.com/cpunion/comments/7046.htmlhttp://www.shnenglu.com/cpunion/archive/2006/05/12/7046.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/7046.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/7046.html
鏈変簺鏃跺欐垜浠茍涓嶉渶瑕佽姹傛湇鍔″櫒錛屽彧鎯沖湪嫻忚鍣ㄤ笂鎵ц鏌愪簺鑴氭湰鏇存柊錛屼絾鍙堟兂浣跨敤RJS銆傛墍浠ヤ負RoR澧炲姞浜嗚繖欏瑰姛鑳姐?br />
浣跨敤鏂規硶錛?br />
<script聽language="javascript">
<%=
render聽:update聽do聽
|page|
聽聽page.define_action聽
'test_action'聽do
聽聽聽聽page.call_script聽
<<-EOS
聽聽聽聽聽聽alert(params.comment.title);
聽聽聽聽聽聽alert(params.comment.body);
聽聽聽聽EOS
聽聽聽聽page.replace_html聽
'errors',聽'ERROR'
聽聽end

聽聽page.define_action聽
'link_action'聽do
聽聽聽聽page.replace_html聽
'errors',聽'ERROR'
聽聽end
end
%>
</script>

<div聽id="errors"></div>

<%=聽form_local_tag聽:html聽=>聽{:action聽=>'test_action'}聽%>
聽聽
<input聽name="comment[title]"/><br聽/>
聽聽
<input聽name="comment[body]"/><br聽/>
聽聽
<%=聽submit_tag聽'Create'%>
<%=聽end_form_tag聽%>

<%=聽link_to_local聽'Test',聽:action聽=>'link_action()'%>

涓婇潰婕旂ず浜唂orm_local_tag鍜宭ink_to_local鐨勪嬌鐢紝鎵撳紑榪欎釜欏甸潰浠ュ悗錛屽彲浠ュ叧鎺夋湇鍔″櫒嫻嬭瘯錛屼細鍙戠幇瀹冧笉璇鋒眰鏈嶅姟鍣ㄤ篃鑳芥墽琛岀浉搴旇剼鏈?br />
define_action瀹氫箟涓涓剼鏈嚱鏁幫紝call_script鐢ㄦ潵瀹炵幇javascript鍜孯JS浠g爜鐨勬販鍚堛傚綋浣跨敤form_local_tag鏃訛紝action鏂規硶鐨勫弬鏁板凡緇忚澶勭悊榪囷紝鎵浠ュ彲浠ョ洿鎺ュ湪action涓嬌鐢╬arams.comment.title銆?br />
褰撶劧鐜板湪榪樹笉瀹屽杽錛屾瘮濡傝繕鍙兘浣跨敤杞崲瀹岀殑欏甸潰妯℃澘錛屼竴浜涘姩鎬侀〉闈㈠皢鐪嬩笉鍑烘晥鏋溿傝鍋氬埌榪欑偣錛岄渶瑕佺敤javascript瀹炵幇涓鏁村鐨凙ctionView杈呭姪鏂規硶銆?br />
涓嬮潰鎻愪緵涓涓拡瀵箁ails 1.1.2鐨勪竴涓ˉ涓佹枃浠訛細

琛ヤ竵鏂囦歡涓嬭澆

qiezi 2006-05-12 23:41 鍙戣〃璇勮
]]>
[RoR] ActionController::Caching妯″潡緙撳瓨浣嶇疆BUGhttp://www.shnenglu.com/cpunion/archive/2006/05/09/6814.htmlqieziqieziTue, 09 May 2006 03:35:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/05/09/6814.htmlhttp://www.shnenglu.com/cpunion/comments/6814.htmlhttp://www.shnenglu.com/cpunion/archive/2006/05/09/6814.html#Feedback2http://www.shnenglu.com/cpunion/comments/commentRss/6814.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/6814.html
class聽CacheController聽<聽ApplicationController
聽聽caches_action聽
:cache_one
聽聽caches_page聽聽聽
:cache_two
聽聽
#
end

class聽TestController聽<聽ApplicationController
聽聽def聽one
聽聽聽聽render聽
:inline聽=><<-EOS
Test
::one<br聽/>
<%=聽render_component聽:controller聽=>'cache',:action聽=>'cache_one'%>
聽聽聽聽EOS
聽聽end

聽聽def聽two
聽聽聽聽render聽
:inline聽=><<-EOS
Test
::two<br聽/>
<%=聽render_component聽:controller聽=>'cache',:action聽=>'cache_two'%>
聽聽聽聽EOS
聽聽end

聽聽
#
end

cache_one鍜宑ache_two鐨勫疄鐜板氨鐪佺暐浜嗐?br />
璁塊棶鐩存帴璁塊棶榪?涓猘ction錛岃兘澶熷湪姝g‘鐨勭洰褰曚笅鐢熸垚緙撳瓨鏂囦歡銆備笉榪囪闂畉est/one鍜宼est/two灝變細鍑虹幇緙撳瓨閿欒錛?涓紦瀛樻枃浠惰鐢熸垚鍒癈ACHE_ROOT/test涓嬶紝璇曟兂濡傛灉鍦ㄥ涓湴鏂逛嬌鐢╮ender_component錛屽氨浼氫駭鐢熷緢澶氫喚涓鏍峰唴瀹圭殑緙撳瓨銆?br />
request浼氳浼犻掔粰controller錛屽綋璁塊棶/test/one鏃訛紝榪欎釜request淇濈暀鏈夎繖涓猽rl銆傝皟鐢╮ender_component鏃訛紝浼氱敓鎴愪竴涓柊鐨刢ontroller錛岃繖涓猺equest涔熻浼犻掞紝涓嶈繃url鍗磋繕鏄?test/one錛屾墍浠ュ氨鏈夎繖涓棶棰樸?br />
淇錛?br />
module聽ActionController聽#:nodoc:
聽聽module聽Caching
聽聽聽聽module聽Actions
聽聽聽聽聽聽class聽ActionCacheFilter聽
#:nodoc:
聽聽聽聽聽聽聽聽def聽before(controller)
聽聽聽聽聽聽聽聽聽聽
returnunless@actions.include?(controller.action_name.intern)
聽聽聽聽聽聽聽聽聽聽url聽
=聽controller.url_for(:controller聽=>聽controller.controller_name,:action聽=>聽controller.action_name)
聽聽聽聽聽聽聽聽聽聽
if聽cache聽=聽controller.read_fragment(url.split("://").last)
聽聽聽聽聽聽聽聽聽聽聽聽controller
.rendered_action_cache聽=聽true
聽聽聽聽聽聽聽聽聽聽聽聽controller
.send(:render_text,聽cache)
聽聽聽聽聽聽聽聽聽聽聽聽false
聽聽聽聽聽聽聽聽聽聽end
聽聽聽聽聽聽聽聽end

聽聽聽聽聽聽聽聽def聽after(controller)
聽聽聽聽聽聽聽聽聽聽
returnif!@actions.include?(controller.action_name.intern)聽||聽controller.rendered_action_cache
聽聽聽聽聽聽聽聽聽聽url聽
=聽controller.url_for(:controller聽=>聽controller.controller_name,:action聽=>聽controller.action_name)
聽聽聽聽聽聽聽聽聽聽controller
.write_fragment(url.split("://").last,聽controller.response.body)
聽聽聽聽聽聽聽聽end
聽聽聽聽聽聽end
聽聽聽聽end
聽聽end
end

閫氳繃鏇挎崲controller鍜宎ction鏉ヨВ鍐籌紝嫻嬭瘯緇撴灉姝g‘銆?br />
涓嶈繃榪樻湁鍏跺畠闂娌′慨澶嶏紝姣斿url涓弬鏁扮殑闂錛岃櫧鐒惰皟鐢╮ender_component鏃舵垜騫舵病鏈変紶閫掑弬鏁幫紝浣嗗畠榪樻槸鎶婂弬鏁扮粰浼犻掍簡銆傚彟澶栨病鏈変慨澶峜aches_page鍜宖ragment銆?br />
鍏跺疄榪欎釜闂鏄敱render_component甯︽潵鐨勶紝鎵浠ユ渶濂界殑淇鍔炴硶褰撶劧鏄慨澶嶈繖涓柟娉曪紝璁╁畠澶勭悊姝g‘鐨刢ontroller/action/params錛屾殏鏃惰繕娌℃壘鍑轟慨澶嶆柟娉曘?br />


qiezi 2006-05-09 11:35 鍙戣〃璇勮
]]>
[RoR] 綆鍗曠殑瑙掕壊鏉冮檺媯鏌ユ彃浠?/title><link>http://www.shnenglu.com/cpunion/archive/2006/05/08/6790.html</link><dc:creator>qiezi</dc:creator><author>qiezi</author><pubDate>Mon, 08 May 2006 13:30:00 GMT</pubDate><guid>http://www.shnenglu.com/cpunion/archive/2006/05/08/6790.html</guid><wfw:comment>http://www.shnenglu.com/cpunion/comments/6790.html</wfw:comment><comments>http://www.shnenglu.com/cpunion/archive/2006/05/08/6790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/cpunion/comments/commentRss/6790.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cpunion/services/trackbacks/6790.html</trackback:ping><description><![CDATA[浠g爜姣旇緝綆鍗曪細<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">module聽ActionController聽</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">:nodoc:</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"><br />聽聽class聽CheckGroupError聽</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">聽ActionControllerError聽</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">:nodoc:</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">聽聽聽聽attr_reader聽</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">group_name<br />聽聽聽聽def聽initialize(group_name)<br />聽聽聽聽聽聽</span><span style="COLOR: #800080">@group_name</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽group_name<br />聽聽聽聽end<br />聽聽end<br />聽聽<br />聽聽class聽CheckRoleError聽</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">聽ActionControllerError聽</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">:nodoc:</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">聽聽聽聽attr_reader聽</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">role_name<br />聽聽聽聽def聽initialize(role_name)<br />聽聽聽聽聽聽</span><span style="COLOR: #800080">@role_name</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽role_name<br />聽聽聽聽end<br />聽聽end<br />聽聽<br />聽聽class聽Base聽</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">:nodoc:</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">聽聽聽聽def聽roles<br />聽聽聽聽聽聽[]<br />聽聽聽聽end<br />聽聽聽聽<br />聽聽聽聽def聽groups<br />聽聽聽聽聽聽[]<br />聽聽聽聽end<br />聽聽聽聽<br />聽聽聽聽def聽check_roles(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">role_args)<br />聽聽聽聽聽聽role_args</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">each</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">do</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">role</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"><br />聽聽聽聽聽聽聽聽check_role(role)<br />聽聽聽聽聽聽end<br />聽聽聽聽end<br />聽聽聽聽<br />聽聽聽聽def聽check_groups(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">group_args)<br />聽聽聽聽聽聽group_args</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">each</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">do</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">group</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"><br />聽聽聽聽聽聽聽聽check_group(group)<br />聽聽聽聽聽聽end<br />聽聽聽聽end<br />聽聽聽聽<br />聽聽聽聽def聽check_group(group)<br />聽聽聽聽聽聽raise聽CheckGroupError</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">new(group</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">to_s)聽</span><span style="COLOR: #0000ff">unless</span><span style="COLOR: #000000">聽groups()</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">include</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">(group</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">to_s)<br />聽聽聽聽end<br />聽聽聽聽<br />聽聽聽聽def聽check_role(role)<br />聽聽聽聽聽聽raise聽CheckRoleError</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">new(role</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">to_s)聽聽聽</span><span style="COLOR: #0000ff">unless</span><span style="COLOR: #000000">聽roles()</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">include</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">(role</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">to_s)聽聽聽聽聽聽<br />聽聽聽聽end<br />聽聽end<br />聽聽<br />end</span></div><br />鍙渶瑕佸湪ApplicationController涓疄鐜皉oles鍜実roups榪?涓柟娉曪紝瀵規暟鎹簱妯″紡娌℃湁浠諱綍闄愬埗錛屽彧瑕佽兘淇濊瘉榪?涓柟娉曡兘澶熷緱鍒板綋鍓嶇敤鎴風殑瑙掕壊鍜岀粍鍗沖彲銆?br /><br />鏈?涓猚heck鏂規硶鍙敤錛屽彲浠繪剰浣跨敤涓涓垨澶氫釜銆?br /><br />綆鍗曟ā鎷熸祴璇曚竴涓嬶細<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">class聽ApplicationController聽</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">聽ActionController</span><span style="COLOR: #000000">::</span><span style="COLOR: #000000">Base<br />聽聽def聽roles<br />聽聽聽聽</span><span style="COLOR: #800080">%w</span><span style="COLOR: #000000">(add聽show)<br />聽聽end<br /><br />聽聽def聽groups<br />聽聽聽聽</span><span style="COLOR: #800080">%w</span><span style="COLOR: #000000">(users)<br />聽聽end<br />end</span></div><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">class聽TestController聽</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">聽ApplicationController<br />聽聽def聽test1<br />聽聽聽聽check_role聽</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">add<br />聽聽聽聽render_text聽</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">OK</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000"><br />聽聽end<br /><br />聽聽def聽test2<br />聽聽聽聽check_role聽</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">add<br />聽聽聽聽check_group聽</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">users<br />聽聽聽聽render_text聽</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">OK</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000"><br />聽聽end<br /><br />聽聽def聽test3<br />聽聽聽聽check_groups聽</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">admin</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">users<br />聽聽聽聽render_text聽</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">OK</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000"><br />聽聽end<br /><br />聽聽def聽test4<br />聽聽聽聽check_roles聽</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">add</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">remove<br />聽聽聽聽render_text聽</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">OK</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000"><br />聽聽end<br />end</span></div><br />鍏朵腑錛宼est1銆乼est2閮戒細鎴愬姛錛岃宼est3鍜宼est4鍒欎細澶辮觸鏄劇ず寮傚父錛屽彧闇瑕佸鐞唕escue_action鎶婂畠淇敼涓鴻嚜宸辯殑鏄劇ず欏甸潰鍗沖彲銆?img src ="http://www.shnenglu.com/cpunion/aggbug/6790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cpunion/" target="_blank">qiezi</a> 2006-05-08 21:30 <a href="http://www.shnenglu.com/cpunion/archive/2006/05/08/6790.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[RoR] Login Engine琛ヤ竵http://www.shnenglu.com/cpunion/archive/2006/05/08/6778.htmlqieziqieziMon, 08 May 2006 13:13:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/05/08/6778.htmlhttp://www.shnenglu.com/cpunion/comments/6778.htmlhttp://www.shnenglu.com/cpunion/archive/2006/05/08/6778.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/6778.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/6778.htmlLogin Engine鏄潪甯稿ソ鐢ㄧ殑涓涓櫥褰昬ngine錛屼笉榪囦篃鏈変釜緙虹偣錛屽畠鎶婄敤鎴蜂俊鎭紦瀛樺湪session閲屻傚鏋滅敤鎴鋒瘡嬈′慨鏀瑰畬鑷繁鐨勮祫鏂欙紝閮芥妸session鏇存柊鐨勮瘽錛岃嚜鐒舵槸涓嶄細鏈変粈涔堟暟鎹笉鍚屾鐨勯棶棰樸備笉榪囪瘯鎯寵繖鏍蜂竴縐嶆儏鍐碉細

1銆佺敤鎴稟鐧誨綍錛涚敤鎴稟鐨勪俊鎭皢淇濆瓨鍦╯ession[:user]閲屻?br />2銆佺鐞嗗憳鎿嶄綔鐢ㄦ埛A錛屼慨鏀圭敤鎴稟鐨勮祫鏂欏茍淇濆瓨銆?br />3銆佺敤鎴稟鍒鋒柊欏甸潰銆?/p>

濡傛灉鏄劇ず鐢ㄦ埛璧勬枡鏄粠session[:user]璇誨彇鐨勮瘽錛屾樉鐒剁敤鎴稟鐪嬪埌鐨勬槸鑰佺殑璧勬枡銆?br />
姝g‘鐨勫仛娉曟槸綆$悊鍛樹慨鏀圭敤鎴瘋祫鏂欎互鍚庯紝鎶婄敤鎴穝ession閲岀殑鍐呭涔熸洿鏂幫紝褰撶劧榪欎釜瀹炴柦璧鋒潵鏈変簺鍥伴毦錛岀洰鍓嶇湅鏉ユ棤娉曠敱鐢ㄦ埛ID鑾峰緱瀵瑰簲鐨剆ession銆?br />
鏈夋湅鍙嬭session閲屼笉搴旇緙撳瓨鐢ㄦ埛淇℃伅錛岃屽簲鍙繚瀛樼敤鎴稩D銆傝繖鏄紜殑錛岃繖鏍峰彲浠ヨВ鍐充笂闈㈢殑闂錛屼笉榪囧甫鏉ョ殑闂鏄瘡嬈¢兘瑕佷粠鏁版嵁搴撴煡璇€?br />
濡傛灉姣忔鍒鋒柊欏甸潰閮戒粠鏁版嵁搴撻噸鏂拌鍙栫敤鎴蜂俊鎭紝瀵規ц兘褰卞搷鏄緢澶х殑銆傝瘯鎯充竴涓嬬敤鎴鋒鍦ㄦ祻瑙堜竴涓鍧涚殑甯栧瓙鍒楄〃錛岃繖涓〉闈㈠彲鑳芥墍鏈夌敤鎴風湅璧鋒潵閮芥槸涓鏍風殑錛屽敮涓涓嶄竴鏍風殑鍦版柟鏄笂闈㈢敤鎴蜂俊鎭殑鏄劇ず銆傜敱浜庡ぇ閮ㄥ垎鍐呭閮戒竴鏍鳳紝鍙互浣跨敤緙撳瓨鍔犲揩嫻忚閫熷害銆備笉榪囧嵈鐢變簬session閲屽彧淇濆瓨浜嗙敤鎴稩D錛屼笉寰椾笉璇誨彇鏁版嵁搴撴潵鑾峰緱鐢ㄦ埛淇℃伅錛岃繖鏍峰氨鎶婇熷害鍙堟嫋鎱簡銆?br />
鎵浠ュ簲璇ユ妸鐢ㄦ埛淇℃伅緙撳瓨璧鋒潵錛屼絾瑕佷繚璇佸畠鑳藉強鏃舵洿鏂般傛柟娉曡嚜宸卞仛涓涓紦瀛樼鐞嗗櫒錛岃兘鏍規嵁鐢ㄦ埛ID寰楀埌鐢ㄦ埛淇℃伅錛屼篃鑳介殢鏃舵洿鏂板畠銆?br />
瀛︾潃ActionController::Caching鍋氫簡涓涓猆serManager錛屽畠鍙互鏍規嵁綰跨▼閰嶇疆鏉ヨ嚜鍔ㄥ紑鍏充簰鏂ュ櫒錛?br />(/vender/plugins/login_engine/lib/login_engine/user_management.rb)

module聽UserManagement聽 # :nodoc:
聽聽class聽UnthreadedUserManager聽 # :nodoc:
聽聽聽聽def聽initialize聽 # :nodoc:
聽聽聽聽聽聽 @users = 聽{}
聽聽聽聽end
聽聽聽聽
聽聽聽聽def聽get(user_id)
聽聽聽聽聽聽
@users [user_id]
聽聽聽聽end
聽聽聽聽
聽聽聽聽def聽set(user_id
, 聽user)
聽聽聽聽聽聽
@users [user_id]聽 = 聽user
聽聽聽聽end
聽聽end
聽聽
聽聽module聽ThreadSafety聽
# :nodoc:
聽聽聽聽def聽get(user_id)聽 # :nodoc:
聽聽聽聽聽聽 @mutex . synchronize聽{聽super聽}
聽聽聽聽end
聽聽聽聽def聽set(user_id
, 聽user)聽 # :nodoc:
聽聽聽聽聽聽 @mutex . synchronize聽{聽super聽}
聽聽聽聽end
聽聽end
聽聽
聽聽class聽UserManager聽
< 聽UnthreadedUserManager
聽聽聽聽def聽initialize
聽聽聽聽聽聽super
聽聽聽聽聽聽
if 聽ActionController :: Base . allow_concurrency
聽聽聽聽聽聽聽聽
@mutex = 聽Mutex . new
聽聽聽聽聽聽聽聽UserManager
. send ( : include , 聽ThreadSafety)
聽聽聽聽聽聽end
聽聽聽聽end
聽聽end
聽聽
聽聽@
@user_manager = 聽UserManagement :: UserManager . new
聽聽
聽聽def聽set_current_user(user)
聽聽聽聽
return 聽session[ : user_id]聽 = 聽nil聽 if 聽user . nil ?
聽聽聽聽session[
: user_id]聽 = 聽user . id
聽聽聽聽cache_user(user)
聽聽end
聽聽
聽聽def聽current_user
聽聽聽聽get_user(session[
: user_id])
聽聽end
聽聽
聽聽def聽cache_user(user)
聽聽聽聽
return if 聽user . nil ?
聽聽聽聽@
@user_manager . set(user . id , 聽user)
聽聽end
聽聽
聽聽def聽get_user(user_id)
聽聽聽聽@
@user_manager . get(user_id)
聽聽end
end聽聽

淇敼(/verdor/plugins/login_engine/lib/login_engine.rb)錛?br />
#.
require
'login_engine/user_management'

module聽LoginEngine
聽include聽UserManagement
聽聽
#.
end

鍔犲叆涓婇潰鍔犵矖鐨?琛屻?br />
淇敼(/verdor/plugins/login_engine/lib/login_engine/authenticated_system.rb)錛屾妸session[:user]鏇挎崲涓簊ession[:user_id]銆?br />
淇敼(/verdor/plugins/login_engine/app/controllers/user_controller.rb):

聽聽def聽login
聽聽聽聽
returnif聽generate_blank
聽聽聽聽
@user=聽User.new(params[:user])
聽聽聽聽
if聽user聽=聽User.authenticate(params[:user][:login],聽params[:user][:password])
聽聽聽聽聽聽user
.logged_in_at聽=Time.now
聽聽聽聽聽聽user
.save
聽聽聽聽聽聽set_current_user(user)
聽聽聽聽聽聽flash[
:notice]聽="Login聽successful"
聽聽聽聽聽聽redirect_to_stored_or_default聽
:action聽=>'home'
聽聽聽聽
else
聽聽聽聽聽聽
@login=聽params[:user][:login]
聽聽聽聽聽聽flash
.now[:warning]聽='Login聽unsuccessful'
聽聽聽聽end
聽聽end

聽聽def聽logout
聽聽聽聽set_current_user(nil)
聽聽聽聽redirect_to聽
:action聽=>'login'
聽聽end

聽聽def聽get_user_to_act_on
聽聽聽聽
@user=聽current_user
聽聽end

綆鍗曟祴璇曪細

require'login_engine'

class聽ApplicationController聽
<聽ActionController::Base
聽聽include聽LoginEngine
聽聽
聽聽helper聽
:user
聽聽model聽
:user
聽聽聽聽
聽聽before_filter聽
:login_required
end

class聽ShowController聽<聽ApplicationController
聽聽def聽show
聽聽聽聽render_text聽"User聽name:聽#{current_user.first_name}"
聽聽end
end

class聽AdminController聽<聽ApplicationController
聽聽def聽edit
聽聽聽聽user聽
=聽User.find(params[:id])
聽聽聽聽user
.update_attributes(:first_name聽=>聽params[:name])
聽聽聽聽cache_user(user)
聽聽聽 render_text "User name: #{user.first_name}"
聽聽end
end

涓涓畝鍗曠殑妯℃嫙錛?br />1銆佺敤鎴稟浠嶪E鐧誨綍錛岃闂?show/show錛屽皢鏄劇ず鐢ㄦ埛鐨勫悕瀛椼?br />2銆佺鐞嗗憳浠嶧F鐧誨綍錛岃闂?show/show錛屽皢鏄劇ず綆$悊鍛樺悕瀛椼?br />3銆佺鐞嗗憳璁塊棶/show/show/2?name=hello錛屽叾涓?鏄敤鎴稟鐨処D銆傝繖灝嗘妸鐢ㄦ埛A鐨勫悕瀛椾慨鏀逛負hello銆?br />4銆佺敤鎴稟鍒鋒柊欏甸潰錛屽彲浠ョ湅鍒版樉紺虹殑鐢ㄦ埛鍚嶅瓧宸茬粡鍙戠敓鍙樺寲銆?br />
浠ヤ笂榪囩▼璇磋繖涓慨鏀瑰凡緇忚揪鍒扮洰鐨勩傚疄鐜拌繖涓姛鑳藉茍涓嶉毦錛屼富瑕佹槸涓轟簡淇濈暀Login Engine鍘熸湁鐨勫姛鑳戒笉鍙樸?br />
淇敼鍚庣殑浠g爜錛?br />www.shnenglu.com/Files/cpunion/login_engine.rar

qiezi 2006-05-08 21:13 鍙戣〃璇勮
]]>
Ruby on Rails 涓枃緇?/title><link>http://www.shnenglu.com/cpunion/archive/2006/04/24/6140.html</link><dc:creator>qiezi</dc:creator><author>qiezi</author><pubDate>Mon, 24 Apr 2006 02:25:00 GMT</pubDate><guid>http://www.shnenglu.com/cpunion/archive/2006/04/24/6140.html</guid><wfw:comment>http://www.shnenglu.com/cpunion/comments/6140.html</wfw:comment><comments>http://www.shnenglu.com/cpunion/archive/2006/04/24/6140.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/cpunion/comments/commentRss/6140.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cpunion/services/trackbacks/6140.html</trackback:ping><description><![CDATA[<table style="BORDER-RIGHT: #aa0033 1px solid; BORDER-TOP: #aa0033 1px solid; FONT-SIZE: small; BORDER-LEFT: #aa0033 1px solid; BORDER-BOTTOM: #aa0033 1px solid" align="center"> <tbody> <tr> <td rowspan="3"> <img height="58" alt="Google Groups" src="http://groups.google.com/groups/img/groups_medium.gif" width="150" /> </td> <td align="middle" colspan="2"> <b>Subscribe to Ruby on Rails 涓枃緇?/b> </td> </tr> <form action="http://groups.google.com/group/railscn/boxsubscribe"> <tr> <td>Email: <input name="email" /></td> <td> <table style="BORDER-RIGHT: #ffcc33 2px outset; PADDING-RIGHT: 2px; BORDER-TOP: #ffcc33 2px outset; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; BORDER-LEFT: #ffcc33 2px outset; PADDING-TOP: 2px; BORDER-BOTTOM: #ffcc33 2px outset; BACKGROUND-COLOR: #ffcc33"> <tbody> <tr> <td> <input type="submit" value="Subscribe" name="sub" /> </td> </tr> </tbody> </table> </td> </tr> </form> <tr> <td align="middle" colspan="2"> <a >Browse Archives</a> at <a >groups.google.com</a></td> </tr> </tbody> </table> <br />閭歡鍒楄〃浜ゆ祦鏂逛究浜涳紝嬈㈣繋澶у璁㈤槄銆?br /><br />娉ㄦ剰錛?br />1銆佷笉瑕佷嬌鐢ㄩ偖浠惰嚜鍔ㄥ洖澶嶅姛鑳姐?br />2銆佷笉瑕佷嬌鐢ㄧ鍚嶃?br />3銆佸洖澶嶉偖浠舵敞鎰忚鍓紩鐢ㄣ?br />4銆佷嬌鐢ㄦ枃鏈偖浠躲?img src ="http://www.shnenglu.com/cpunion/aggbug/6140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cpunion/" target="_blank">qiezi</a> 2006-04-24 10:25 <a href="http://www.shnenglu.com/cpunion/archive/2006/04/24/6140.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Groovy on Rails 0.1鍙戝竷http://www.shnenglu.com/cpunion/archive/2006/04/07/5141.htmlqieziqieziFri, 07 Apr 2006 08:59:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/04/07/5141.htmlhttp://www.shnenglu.com/cpunion/comments/5141.htmlhttp://www.shnenglu.com/cpunion/archive/2006/04/07/5141.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/5141.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/5141.html
鍦╓INDOWS涓嬫墽琛岋紝閬囧埌涓皬BUG錛実rails.bat絎?琛岋細if "%GRAILS_HOME"=="" goto grailsHomeNotSet鏄敊璇殑錛屾敼鎴恑f "%GRAILS_HOME%"=="" goto grailsHomeNotSet灝卞彲浠ヤ簡銆傚悗闈篃鏈夌偣灝忛棶棰橈紝騫茶剢鍦↙INUX涓嬫祴璇曘?br />
鐓х潃Quick Start鍋氫簡涓涓嬶紝榪樼畻欏哄埄錛屼笉榪囦緥瀛愭庝箞鍙粰浜嗕釜list鍛紵鎬庝箞涔熷緱鎶奵reate/update/delete緇欏畬鎴愬槢銆?br />
鐚滅潃鍐欎簡涓猚reate:

聽聽聽聽聽聽聽聽@Property聽create聽=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽[聽post聽:聽
new聽Post()聽]
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽@Property聽save聽
=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
new聽Post(params).save()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽redirect(action:list)
聽聽聽聽聽聽聽聽}

鎬庝箞瀛樿繘鍘葷殑涓嶆槸鎴戦偅涓瓧絎︿覆錛岃屾槸[Ljava.lang.String;@18b5a73鍛€傘?br />
鍙堢湅浜嗕笅鏂囨。錛屽湪controller閲岄潰鏄繖涔堢敤鐨勶細

聽聽聽聽聽聽聽聽@Property聽save聽=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽def聽post聽
=new聽Post()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽post.properties聽
=params
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽post.save()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽redirect(action:list)
聽聽聽聽聽聽聽聽}

鍏跺畠閮藉緢鐩鎬技錛?br />
class聽PostController聽{

聽聽聽聽聽聽聽聽@Property聽index聽
=聽{聽redirect(action:list)聽}

聽聽聽聽聽聽聽聽@Property聽list聽
=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽[聽postList聽:聽Post.list()聽]

聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽@Property聽create聽
=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽[聽post聽:聽
new聽Post()聽]
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽@Property聽save聽
=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽def聽post聽
=new聽Post()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽post.properties聽
=params
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽post.save()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽redirect(action:list)
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽@Property聽show聽
=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽[聽post聽:聽Post.
get(params['id'])聽]
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽@Property聽delete聽
=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽Post.
get(params['id']).delete()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽redirect(action:list)
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽@Property聽edit聽
=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽[聽post聽:聽Post.
get(params['id'])聽]
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽@Property聽update聽
=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽def聽post聽
=聽Post.get(params['id'])
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽post.properties聽
=params
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽post.save()
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽redirect(action:list)
聽聽聽聽聽聽聽聽}
}

璇硶涓婃瘮RoR紼嶉夯鐑︾偣銆?br />
鎺ョ潃嫻嬭瘯涓涓嬫煡璇細

聽聽聽聽聽聽聽聽@Property聽list聽=聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽def聽title聽
=params['title']
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽def聽body聽
=params['body']
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽def聽postList
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽def聽c聽
=聽Post.createCriteria()

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
//if聽(title聽!=聽null聽&&聽title聽!=聽""聽&&聽body聽!=聽null聽&&聽body聽!=聽"")
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(title聽&&聽body)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽postList聽
=聽c{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽like(
"title",聽"%"+聽title聽+"%")
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽like(
"body",聽"%"+聽body聽+"%")
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
elseif聽(title)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽postList聽
=聽c{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽like(
"title",聽"%"++聽title聽+"%")
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
elseif聽(body)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽postList聽
=聽c{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽like(
"body",聽"%"+聽body聽+"%")
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽postList聽
=聽Post.list()

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽[聽postList聽:聽postList,聽post聽:聽
new聽Post()聽]
聽聽聽聽聽聽聽聽}

list.gsp閲岄潰娣誨姞錛?br />
聽聽聽聽聽聽聽聽聽聽聽<g:form聽action="list"聽method="post">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
<div聽class="dialog">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
<table>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
<tr聽class='prop'>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 <
td聽valign='top'聽style='text-align:left;'聽width='20%'>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 <
label聽for='title'>Title:</label>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 </
td>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽聽 聽聽聽 <
td聽valign='top'聽style='text-align:left;'聽width='80%'
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 class='${hasErrors(bean:post,field:'title','errors')}'>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 <
input聽type='text'聽name='title'聽value='${post?.title}'/>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 </
td>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 </
tr>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
<tr聽class='prop'>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 <
td聽valign='top'聽style='text-align:left;'聽width='20%'>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 <
label聽for='body'>Body:</label>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 </
td>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 <
td聽valign='top'聽style='text-align:left;'聽width='80%'
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 class
='${hasErrors(bean:post,field:'body','errors')}'>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 <
input聽type='text'聽name='body'聽value='${post?.body}'/>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 </
td>
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 </
tr>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽
</table>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
</div>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
<div聽class="buttons">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
<span聽class="formButton">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
<input聽type="submit"聽value="Search"></input>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
</span>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
</div>
聽聽聽聽聽聽聽聽聽聽聽
</g:form>

groovy鍐欎唬鐮佹尯鐑︾殑錛屽眬閮ㄥ彉閲忎篃瑕乨ef鏉ュ畾涔夛紵涓嶅畾涔夊氨鎻愮ず璇ュ彉閲忎笉鏄璞$殑瀛楁錛岃窡寰堝鑴氭湰璇█閮戒笉涓鏍楓傚鏋滀粠java涓婅漿榪囨潵錛屼細瑙夊緱榪樻槸鎸虹畝媧佺殑銆?br />
鍊熷姪spring銆乭ibernate錛孏rails鎵鍋氱殑灝辨槸鏁村悎錛実roovy榪欎釜璇█濂藉儚騫舵病鏈夌壒鍒嚭浼楃殑鍦版柟錛屽ぇ閮ㄥ垎涓滆タ鍦ㄥ叾瀹冭剼鏈璦閲岄潰閮借兘鐪嬪埌銆傛垜瑙夊緱ruby鏇村鏄撴墿鍏咃紝鏇磋嚜鐢便侴rails瑕佹兂鎴愬姛錛岄櫎闈炲湪鏁堢巼涓婂ぇ騫呭害棰嗗厛錛屽氨嫻嬭瘯鏉ョ湅錛屽茍娌℃湁瑙夊緱寰堝揩錛屽畠涔熸病鎻愪緵涓瘎嫻嬪伐鍏楓傛嵁璇磖uby2.0涔熻閲嶅啓铏氭嫙鏈猴紝濡傛灉ruby鍙槸紼嶆參涓浜涳紝鑷劧榪樻槸閫塕oR姣旇緝濂姐?br />

qiezi 2006-04-07 16:59 鍙戣〃璇勮
]]>
rails鐩稿叧閾炬帴鏀墮泦http://www.shnenglu.com/cpunion/archive/2006/03/23/4489.htmlqieziqieziThu, 23 Mar 2006 04:53:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/03/23/4489.htmlhttp://www.shnenglu.com/cpunion/comments/4489.htmlhttp://www.shnenglu.com/cpunion/archive/2006/03/23/4489.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/4489.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/4489.html
鎵╁睍ActiveRecord紺轟緥錛?br />http://wiki.rubyonrails.com/rails/pages/ExtendingActiveRecordExample

澧炲姞created_by鍜寀pdated_by欖旀湳瀛楁錛?br />http://wiki.rubyonrails.com/rails/pages/Howto+Add+created_by+and+updated_by

宓屽闆嗗悎錛堟爲錛夛細
http://threebit.net/tutorials/nestedset/tutorial1.html
http://api.rubyonrails.com/classes/ActiveRecord/Acts/NestedSet/ClassMethods.html

acts_as_threaded鎻掍歡婕旂ず錛堝彲鍒朵綔璁哄潧銆侀偖浠剁嚎绱級錛?br />http://www.railtie.net/plugins/acts_as_threaded/threaded.swf


qiezi 2006-03-23 12:53 鍙戣〃璇勮
]]>
瀛︿範Ruby鐨勪竴鐐逛綋浼?/title><link>http://www.shnenglu.com/cpunion/archive/2005/09/30/507.html</link><dc:creator>qiezi</dc:creator><author>qiezi</author><pubDate>Fri, 30 Sep 2005 04:12:00 GMT</pubDate><guid>http://www.shnenglu.com/cpunion/archive/2005/09/30/507.html</guid><wfw:comment>http://www.shnenglu.com/cpunion/comments/507.html</wfw:comment><comments>http://www.shnenglu.com/cpunion/archive/2005/09/30/507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/cpunion/comments/commentRss/507.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cpunion/services/trackbacks/507.html</trackback:ping><description><![CDATA[<P>浠呬粎鏄釜浜虹殑涓鐐逛綋浼氥?BR><BR>棣栧厛瀹冨拰python閮藉睘浜庡姩鎬佽В閲婂瀷鑴氭湰璇█錛岄櫎姝や箣澶栵紝鏈夊緢澶氫笉鍚屻?BR><BR>python鏄竴涓函綺圭殑鑴氭湰璇█錛屼互鏄撳鏄撶敤涓轟富錛孯uby鏇村鏉備竴浜涳紝瀹冪殑璇硶涓婃洿宕囧皻綆媧侊紝鍦ㄨ娉曞拰璇箟涓婃瘮python瑕佷弗鏍煎緱澶氥傝櫧鐒秔ython瑕佹眰浠ョ緝榪戞潵鎺у埗鏍煎紡錛屼絾闄や簡榪欑偣浠ュ錛屽叾瀹冩柟闈uby閮芥瘮瀹冭涓ユ牸錛屾煇浜涙柟闈㈠彲浠ヨ涓篟uby鈥滄洿鍍忔槸涓闂ㄧ湡姝g殑璇█鈥濄?BR><BR><BR><BR>鍒氬紑濮嬪錛屾參鎱㈡葷粨鍚с?BR><BR>Ruby on Rails涔熺収鐫鍋氫簡涓鎶婏紝鏋滅劧寰堥叿錛屽彧鏄湁浜涙暀紼嬪拰鐩墠鐨勭増鏈笉涓鑷淬?BR><BR>瀵筊uby榪樹笉鐔燂紝瑕佸仛欏圭洰涔熷彧濂藉厛瀛︿竴涓嬭璦浜嗭紝瀵筊uby鎰熷叴瓚o紝涓鏄湅鍒頒簡Ruby on Rails錛屽彟澶栧氨鏄湡鐨勫幓瀛︿範鏃訛紝鎵嶅彂鐜板畠涓嶆槸鍙︿竴涓猵ython/js/vb/php絳夎剼鏈璦銆?/P><img src ="http://www.shnenglu.com/cpunion/aggbug/507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cpunion/" target="_blank">qiezi</a> 2005-09-30 12:12 <a href="http://www.shnenglu.com/cpunion/archive/2005/09/30/507.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Ruby瀛︿範璧勬簮http://www.shnenglu.com/cpunion/archive/2005/09/28/477.htmlqieziqieziWed, 28 Sep 2005 13:12:00 GMThttp://www.shnenglu.com/cpunion/archive/2005/09/28/477.htmlhttp://www.shnenglu.com/cpunion/comments/477.htmlhttp://www.shnenglu.com/cpunion/archive/2005/09/28/477.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/477.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/477.html
  • Ruby瀹樻柟緗戠珯錛?A >www.ruby-lang.org
  • Ruby鍥藉唴涓枃绔欙細http://www.ruby-cn.org/
  • Ruby on Rails錛?A >http://www.rubyonrails.org/
  • Ajax on Rails錛?A >http://www.onlamp.com/lpt/a/5944


  • qiezi 2005-09-28 21:12 鍙戣〃璇勮
    ]]>
    国产69精品久久久久观看软件| av午夜福利一片免费看久久| 久久国产精品99精品国产987| 日本久久久精品中文字幕| 国产精品成人久久久久久久| 亚洲人AV永久一区二区三区久久 | 久久Av无码精品人妻系列 | 中文字幕成人精品久久不卡| 久久久久久久综合综合狠狠| 2021国产精品久久精品| 久久se精品一区二区| 波多野结衣久久精品| 久久精品这里热有精品| 久久毛片一区二区| 亚洲国产成人久久综合碰碰动漫3d | 久久久噜噜噜久久熟女AA片| 久久久久人妻精品一区三寸蜜桃| 亚洲人成伊人成综合网久久久| 国产精品久久久久无码av| 中文字幕亚洲综合久久菠萝蜜| 麻豆精品久久精品色综合| 亚洲AV无码久久精品色欲| 久久久久久极精品久久久| 欧美日韩中文字幕久久伊人| 色综合久久无码中文字幕| 日本五月天婷久久网站| 久久午夜福利电影| 久久精品一区二区三区中文字幕| 久久久久久国产精品免费无码 | 91精品国产色综久久 | 草草久久久无码国产专区| 国产一区二区精品久久 | 久久综合视频网站| 久久国产视频网| 国内精品久久久久久久亚洲| 国内精品久久久久久久久电影网 | 区久久AAA片69亚洲| 久久久久久曰本AV免费免费| 久久伊人精品一区二区三区| 久久久国产打桩机| 狠狠综合久久AV一区二区三区|