xiaoqiu369

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            7 Posts :: 3 Stories :: 2 Comments :: 0 Trackbacks

          routes:

          routes的命名允許你減少重復的代碼,通過分配一個根據生成一個封裝routes rule hash的方法的路徑規則名稱來實現,
          你可以定義一個命名路徑,你可以調用它在你的routes.rb文件中來代替connect方法.
          例如:
          map.home '',:controller=>'main',:action=>'start'
          這只是為你做了很少的一點事.首先,它創建一個名為home_url的方法.因此上面的命名規則,前期的請求為:
           redirect_to :controller=>'main',:action=>'start' 現在為:
           redirect_to home_url

          因為*_to方法被重寫的方式,在上面的情況,你沒有將參數傳遞給命名路徑,你也可以將它傳遞給一個引用的方法.
           redirect_to :home_url

          注意:將命名路徑做為一個符號已經取消了,在rails2.0將被刪除.

          這個也能應用于是tests.如果在你的controller里有redirect_to home_url,也可以用 assert_redirect_to home_url.

          *_url方法需要一個唯一的可選參數.這個參數是一個hash,插入url_for之中,這樣做就是為了當用redirect_to,link_to時命名規則可以參數化.

          你如果說有這樣的route

           map.user_page 'users/:user',:controller=>'users',:action=>'show'

          你可以這樣做

           link_to @user.username,user_page_url(:user=>@user)

          注釋:這個僅僅象普通的routes,表單是path_part/:symbol.在上面的例子中,user這部分將只展示在路徑中,并不嚴格與controller相關聯.users/只是path生成的部分,
          上面的例子生成<a href="http://localhost/users/7">http://localhost/users/7</a>
          比如:

          :user 是你定義的參數名稱,如果定義兩個一模一樣的路徑,很可能得不到你想要的結果.對于routes,定義默認值.

          當用參數來命名routes,你必須傳遞參數給assert中的命名規則.如果在你的controller中有redirect_to user_page_url(:user=>@user), 你需要有assert_redirected_to user_page_url(:user=>@user).controller中@user的id必須與test中的@user的id匹配.

          除了[route_name]_url方法,你可以用hash_for_[route_name]_url方法,這個方法包裝hash,沒有調用url_for

          所有的reoute將其它的命名規則用map.connect提供給你.

          posted on 2008-12-16 09:58 bobqiu 閱讀(187) 評論(0)  編輯  收藏 所屬分類: ruby&rails

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 兰州市| 丹寨县| 二连浩特市| 宜州市| 江源县| 江津市| 明星| 法库县| 土默特右旗| 鸡泽县| 呼和浩特市| 漳州市| 上高县| 盐城市| 北安市| 清原| 龙川县| 洛阳市| 建湖县| 阿合奇县| 旬邑县| 井研县| 三门县| 行唐县| 越西县| 呼玛县| 安岳县| 阿巴嘎旗| 贵港市| 涿州市| 浦江县| 措美县| 克什克腾旗| 桂东县| 马龙县| 巴马| 保定市| 星座| 平乡县| 乌海市| 固安县|