锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.鍦╝pplication.rb閲屾坊鍔犲垎欏典俊鎭柟娉?
=> Booting WEBrick...
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:442:in `load_missing_constant': uninitialized constant Ferret::Analysis::Analyzer (NameError)
from c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:77:in `const_missing'
from E:/rorapp/demo/vendor/plugins/acts_as_ferret/lib/ferret_extensions.rb:17
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:155:in `require'
from E:/rorapp/demo/vendor/plugins/acts_as_ferret/lib/acts_as_ferret.rb:28
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
... 25 levels...
from c:/ruby/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/server.rb:49
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from script/server:3
瑙e喅鍔炴硶灝辨槸鎶婁笂闈㈠畨瑁呭畬鎴恌erret鍚庣殑鏂囦歡閲屾壘鍒癴errect_ext.so灝嗚繖涓枃浠舵斁鍒發(fā)ib閲岄潰.榪欎釜鏄?00澶欿,鑰屼粠緗戜笂涓嬭澆鐨勬墠30K.瀵艱嚧涓婇潰鐨勯棶棰?
1/ will_paginate
http://groups.google.com/group/will_paginate
榪欎釜璧勬枡寰堝錛屼笉澶氳
2/ squirrel
涓嬭澆錛?a _counted="undefined">http://github.com/thoughtbot/squirrel/tree/master
涓昏瀹炵幇 鍔ㄦ佹潯浠剁殑鏌ヨ錛屾墿灞旳ctiveScaffold find鏂規(guī)硶銆傛敮鎸佽法Model鏌ヨ錛屽叿浣撹
璇存槑錛?a _counted="undefined">http://thoughtbot.com/projects/squirrel
璐存涓昏瀹炵幇浠g爜
#controller:
def index
#######################################################
#涓嬮潰浠g爜鍙互鎸夊疄闄呮儏鍐墊彁鍙栧埌Model鎴栧叾浠栧湴鏂癸紱鏂逛究嫻嬭瘯鎴戠洿鎺ユ斁鍦╥ndex涓?/p>
#######################################################
@permissions = Permission.find(:all) do
paginate :page => params[:page]||1,:per_page=>5
any do
name == params[:permission][:name] unless params[:permission].nil?
code == params[:permission][:code] unless params[:permission].nil?
permit_date == params[:permission][:permit_date] unless params[:permission].nil?
contact.company == params[:contact][:company] unless params[:contact].nil?
end
end
#######################################################
respond_to do |format|
format.html # index.rhtml
format.xml { render :xml => @permissions.to_xml }
end
end
#index--view
<% field_set_tag do %>
<% form_for :permission, :url=>permissions_url,:method=>:get,:html=>{:method=>:get} do |f| %>
鍏徃鍚嶇О :<%= text_field_with_auto_complete :contact, :company,{},{:method=>:get}%> <br>
璇佷功綾誨瀷 :<%= text_field_with_auto_complete :permission, :name,{},{:method=>:get}%> <br>
璇佷功緙栧彿 :<%= text_field_with_auto_complete :permission, :code,{},{:method=>:get}%> <br>
鎺堜笌鏃ユ湡 :<%= text_field_with_auto_complete :permission, :permit_date,{},{:method=>:get}%> <br>
<%= submit_tag '鏌ヨ' %>
<% end %>
<% end %>
...
<div class="digg_pagination">
<div clas="page_info">
<%= page_entries_info @permissions %>
</div>
<%= will_paginate @permissions, :container => false %>
</div>
var nc:NetConnection=new NetConnection();
nc.connect("rtmp://localhost/red51");
nc.objectEncoding=ObjectEncoding.AMF0;
var so:SharedObject=SharedObject.getRemote("mo",nc.uri,false);
nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusEventHandle);
function netStatusEventHandle(e:NetStatusEvent):void {
trace(e.toString);
}
1.The Dual Purpose of Routing
Rails routing 鏈変袱縐嶆満鍒?浣犲彲浠ュ皢trees杞崲涓簆ager,鎴栨妸paper杞崲鍥瀟rees.鍏蜂綋鍦拌,瀹冨彲浠ヨ繛鎺ユ敹鍒扮殑璇鋒眰涓庝綘搴旂敤紼嬪簭鐨勬帶鍒跺櫒鐨勪唬鐮佸拰甯綘鐢熸垚URLs,鑰屼笉鐢ㄥ仛涓轟竴涓瓧絎︿覆紜紪鐮?
1.1connecting URLs to Code;
褰撲綘鐨勫簲鐢ㄧ▼搴忔敹鍒扮殑璇鋒眰涓?
GET /patients/17
Rails閲岀殑璺敱寮曟搸灝辨槸涓孌靛垎鍙戣繖涓姹傚埌搴旂敤紼嬪簭鍚堥傜殑浣嶇疆榪涜澶勭悊鐨勪竴孌典唬鐮?鍦ㄨ繖涓渚嬩腑,榪欎釜搴旂敤紼嬪簭寰堝彲鑳戒互榪愯patients鎺у埗鍣ㄩ噷鐨剆how緇撴潫.鏄劇ずpatients ID涓?7鐨勮緇嗕俊鎭?
1.2 Generateing URLs from Code
Routing 涔熷彲浠ュ弽榪囨潵榪愯,濡傛灉浣犵殑搴旂敤紼嬪簭涓寘鍚繖鏍風(fēng)殑浠g爜:
@patient=Patient.find(17)
<%= link_to "Patient Record",patient_path(@patient)%>
榪欐椂璺敱寮曟搸杞崲榪欎釜閾炬帴鍒頒竴涓猆RL:http://example.com/patients/17.浠ヨ繖縐嶆柟寮忎綘鍙互闄嶄綆搴旂敤紼嬪簭鐨勮剢寮辨?浣夸綘鐨勪唬鐮佹洿鍔犲鏄撻槄璇誨拰鐞嗚В.
Patient 蹇呴』浣滀負(fù)涓涓猺esource琚0鏄庝負(fù)涓涓祫婧?閫氳繃named route鏉ヨ漿鎹?
2.Quick Tour of Routes.rb
鍦≧ails涓璻outing鏈変袱縐嶇粍浠?routing engine鏈韓,瀹冨仛涓篟ails鐨勪竴閮ㄥ垎,config/routes.rb鏂囦歡,瀹冨寘鍚疄闄呯殑鍙敤鍦ㄥ簲鐢ㄧ▼搴忎腑鐨剅outes.
2.1 Processing the File
鍦ㄥ艦寮忎笂,Routes.rb鏂囦歡涔熷氨鏄竴涓ぇ澶х殑block,浼?xì)琚攽謪ctionController::Routing::Routes.draw.
鍦ㄨ繖涓枃浠朵腑鏈変簲縐嶄富瑕佺殑鏍峰紡:
RESTful Routes
Named Routes
Nested Routes
Regular Routes
Default Routes
2.2 RESTful Routes
RESTful Routes 鍒╃敤rails宓屽叆寮廟EST鏂規(guī)硶鏉ュ皢routing鐨勬墍鏈変俊鎭寘瑁呬負(fù)涓涓崟鐙殑澹版槑.eg: map.resource :books
2.3 named Routes
named routes 鍦ㄤ綘鐨勪唬鐮佷腑緇欎綘寰堝彲璇葷殑閾炬帴,涔熷彲浠ュ鐞嗘敹鍒扮殑璇鋒眰
map.login '/login' ,:controller=>'session',:action=>'new'
2.4 Nested routes
Nested routes鍙互鍦ㄤ竴涓祫婧愰噷澹版槑鍙︿竴涓祫婧?
map.resources :assemblies do |assemblies|
assemblies.resources :parts
end
2.5 Regular Routes
map.connect 'parts/:number',:controller=>'inventory',:action=>'show'
2.6 Default Routes
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
routes鐨勫懡鍚嶅厑璁鎬綘鍑忓皯閲嶅鐨勪唬鐮?閫氳繃鍒嗛厤涓涓牴鎹敓鎴愪竴涓皝瑁卹outes rule hash鐨勬柟娉曠殑璺緞瑙勫垯鍚嶇О鏉ュ疄鐜?
浣犲彲浠ュ畾涔変竴涓懡鍚嶈礬寰?浣犲彲浠ヨ皟鐢ㄥ畠鍦ㄤ綘鐨剅outes.rb鏂囦歡涓潵浠f浛connect鏂規(guī)硶.
渚嬪:
map.home '',:controller=>'main',:action=>'start'
榪欏彧鏄負(fù)浣犲仛浜嗗緢灝戠殑涓鐐逛簨.棣栧厛,瀹冨垱寤轟竴涓悕涓篽ome_url鐨勬柟娉?鍥犳涓婇潰鐨勫懡鍚嶈鍒?鍓嶆湡鐨勮姹備負(fù):
redirect_to :controller=>'main',:action=>'start' 鐜板湪涓?
redirect_to home_url
鍥犱負(fù)*_to鏂規(guī)硶琚噸鍐欑殑鏂瑰紡,鍦ㄤ笂闈㈢殑鎯呭喌,浣犳病鏈夊皢鍙傛暟浼犻掔粰鍛藉悕璺緞,浣犱篃鍙互灝嗗畠浼犻掔粰涓涓紩鐢ㄧ殑鏂規(guī)硶.
redirect_to :home_url
娉ㄦ剰:灝嗗懡鍚嶈礬寰勫仛涓轟竴涓鍙峰凡緇忓彇娑堜簡,鍦╮ails2.0灝嗚鍒犻櫎.
榪欎釜涔熻兘搴旂敤浜庢槸tests.濡傛灉鍦ㄤ綘鐨刢ontroller閲屾湁redirect_to home_url,涔熷彲浠ョ敤 assert_redirect_to home_url.
*_url鏂規(guī)硶闇瑕佷竴涓敮涓鐨勫彲閫夊弬鏁?榪欎釜鍙傛暟鏄竴涓猦ash,鎻掑叆url_for涔嬩腑,榪欐牱鍋氬氨鏄負(fù)浜嗗綋鐢╮edirect_to,link_to鏃跺懡鍚嶈鍒欏彲浠ュ弬鏁板寲.
浣犲鏋滆鏈夎繖鏍風(fēng)殑route
map.user_page 'users/:user',:controller=>'users',:action=>'show'
浣犲彲浠ヨ繖鏍峰仛
link_to @user.username,user_page_url(:user=>@user)
娉ㄩ噴:榪欎釜浠呬粎璞℃櫘閫氱殑routes,琛ㄥ崟鏄痯ath_part/:symbol.鍦ㄤ笂闈㈢殑渚嬪瓙涓?user榪欓儴鍒嗗皢鍙睍紺哄湪璺緞涓?騫朵笉涓ユ牸涓巆ontroller鐩稿叧鑱?users/鍙槸path鐢熸垚鐨勯儴鍒?
涓婇潰鐨勪緥瀛愮敓鎴?lt;a href="http://localhost/users/7">http://localhost/users/7</a>
姣斿:
:user 鏄綘瀹氫箟鐨勫弬鏁板悕縐?濡傛灉瀹氫箟涓や釜涓妯′竴鏍風(fēng)殑璺緞,寰堝彲鑳藉緱涓嶅埌浣犳兂瑕佺殑緇撴灉.瀵逛簬routes,瀹氫箟榛樿鍊?
褰撶敤鍙傛暟鏉ュ懡鍚峳outes,浣犲繀欏諱紶閫掑弬鏁扮粰assert涓殑鍛藉悕瑙勫垯.濡傛灉鍦ㄤ綘鐨刢ontroller涓湁redirect_to user_page_url(:user=>@user), 浣犻渶瑕佹湁assert_redirected_to user_page_url(:user=>@user).controller涓瑻user鐨刬d蹇呴』涓巘est涓殑@user鐨刬d鍖歸厤.
闄や簡[route_name]_url鏂規(guī)硶,浣犲彲浠ョ敤hash_for_[route_name]_url鏂規(guī)硶,榪欎釜鏂規(guī)硶鍖呰hash,娌℃湁璋冪敤url_for
鎵鏈夌殑reoute灝嗗叾瀹冪殑鍛藉悕瑙勫垯鐢╩ap.connect鎻愪緵緇欎綘.