freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

rails敏捷開發(fā)2-在線瀏覽

2025-07-02 23:26本頁面
  

【正文】 物車中有東西時才包含顯示它的那段HTML代碼。% unless ? % div class=carttitle Your Cart/div table %= render(:partial = cart_item , :collection = ) % tr class=totalline td colspan=2 Total/td td class=totalcell %= number_to_currency() %/td /tr /table %= button_to Empty cart , :action = :empty_cart %% end %雖然這也是可行的方案,但卻讓用戶界面顯得有點生硬:當購物車由空轉(zhuǎn)為不空時,整個邊框都需要重繪。,可以漂亮地讓頁面元素出現(xiàn)在瀏覽器上。毫不意外地。此外,我們需要先把購物車顯示出來,然后才能使用背景高亮的可視化效果,所以“顯示購物車”的代碼應該在“觸發(fā)高亮效果”的代碼之前。depot_n/app/models/def total_items { |item| }end我們還需要在購物車為空的時候?qū)⑵潆[藏起來。第一,就像本節(jié)開始處展示的,根本不生成任何HTML就好了。所以更好的解決辦法是創(chuàng)建“顯示購物車”的HTML,但對它的CSS樣式進行設(shè)置,使其不被顯示出來——如果購物車為空,就設(shè)置為display:none。首先想到的修改方法大致如下:div id=cart % if ? % style=display: none % end % %= render(:partial = cart , :object = cart) %/div當購物車為空時,這段代碼就會給div標記加上style=display: none這段CSS屬性。下面掛著一個孤孤單單的“”字符,看起來就像放錯了地方一樣(雖然確實沒放錯);而且更糟糕的是,邏輯被放到了HTML標記的中間,這正是給模板語言帶來惡名的行為。輔助方法Helper Methods每當需要將某些處理邏輯從視圖(不管是哪種視圖)中抽象出來時,我們就應該編寫一個輔助方法。進入這個目錄,你會看到其中已經(jīng)有幾個文件存在了。如果你愿意,可以把方法放到某個控制器對應的輔助文件中,但實際上視圖可以使用所有的輔助方法。,它就位于helpers目錄下:module StoreHelperend我們來編寫一個名叫hidden_div_if()的輔助方法,它接收三個參數(shù):一個條件判斷, 一組可選的屬性以及一個代碼塊。在布局文件中,我們會這樣使用它:depot_n/app/views/layouts/% hidden_div_if(?, :id = cart ) do % %= render(:partial = cart , :object = cart) %% end %我們把這個輔助方法放在app/。block) if condition attributes[style ] = display: none end content_tag(div , attributes, amp。通過amp。最后,我們要停用那條曾經(jīng)用來指示購物車已經(jīng)清空的flash消息——我們已經(jīng)不再需要它了,因為當貨品列表頁刷新時,購物車直接就消失了。depot_n/app/controllers/def empty_cart session[:cart] = nil redirect_to_indexend看起來步驟不少,其實不然:要隱藏和顯示購物車,我們所需要做的只是根據(jù)其中貨品的數(shù)量設(shè)置CSS的顯示樣式,另外,當?shù)谝患浧繁环胚M購物車時,通過RJS模板來調(diào)用blind_down效果,僅此而已。由于我們的電腦連接在辦公室網(wǎng)絡上,好多同事干脆打開瀏覽器,親身體驗這個測試程序。每個人都愛死了它,每個人——除了Bruce以外。這樣一來,所有精彩的Ajax效果也都不起作用了。times。即便用戶的瀏覽器禁用了JavaScript,我們的應用程序也應該能夠工作。 迭代D5:JavaScript被禁用時的對策Iteration D5:Degrading If Javascript Is Disabled在第117頁,我們把購物車搬到了邊欄上來顯示,此時應用程序里還沒有任何一行Ajax代碼。換句話說,如果針對add_to_cart的請求不是來自JavaScript,我們就希望應用程序仍然采取原來的行為,并將瀏覽器重定向到首頁。當用戶點擊form_remote_tag中的按鈕時,可能會出現(xiàn)兩種不同的情況。所以,我們可以在服務器上檢查進入的請求是否由xhr對象發(fā)起的,從而判斷瀏覽器是否禁用了JavaScript。這樣一來,只要在add_to_cart中加上兩行代碼,不管用戶的瀏覽器是否允許使用JavaScript,我們的應用程序就都能支持了。l 我們把購物車搬到了邊欄里,并且讓add_to_cart這個action重新顯示貨品分類頁面。l 我們利用RJS模板,單獨更新購物車那一小塊的HTML。l 我們編寫了一個輔助方法,當購物車為空時將其隱藏起來,添加貨品時再用RJS模板將其顯示出來。請牢記我們所采用的漸進式的Ajax開發(fā)方式:首先從一個傳統(tǒng)的應用程序開始,逐漸向其中增加Ajax的特性。另外,正如我們看到的,從一個傳統(tǒng)的應用程序開始也使你能夠更容易地同時支持Ajax和非Ajax的行為方式。首先,如果你打算進行大量的Ajax開發(fā),也許你應該花點時間去熟悉瀏覽器上的JavaScript調(diào)試工具和DOM監(jiān)視工具。其次,F(xiàn)irefox上的NoScript插件可以輕而易舉的改變JavaScript運行/禁止狀態(tài),另外有人發(fā)現(xiàn)在開發(fā)過程中同時運行兩個不同的瀏覽器會很有幫助:一個瀏覽器允許使用JavaScript,另一個禁用。游戲時間Playtime下面的東西,不妨自己動手試試。l 當用戶清空購物車時,我們就將購物車隱藏起來。你能否修改應用程序,改用Script ?l 如果瀏覽器禁用了JavaScript,你剛才所做的修改還能工作嗎?l 嘗試對新放入購物車的貨品使用別的可視化效果。請首先用非Ajax的方式實現(xiàn)這一功能,然后加上Ajax效果。)在本章中,我們將看到如何:● 如何通過外鍵將數(shù)據(jù)庫表關(guān)聯(lián)起來 ● 使用belongs_to和has_many● 根據(jù)模型對象創(chuàng)建表單(form_for) ● 連接表單、模型與視圖第10章 任務E:付賬Task E: Check Out! 我們先來盤點一下成果。所以,現(xiàn)在我們要讓買主能夠?qū)嶋H購買購物車中的貨品,須要實現(xiàn)結(jié)賬的功能。就目前而言,我們只須獲取買主的詳細聯(lián)系信息和付款方式,并用這些信息在數(shù)據(jù)庫里構(gòu)造一份訂單即可。 迭代E1:收集訂單信息Iteration El:Capturing an Order 訂單(order)是由一組訂單項(line item)、外加購買交易的詳細信息構(gòu)成的。不過現(xiàn)在還沒有一張數(shù)據(jù)庫表來存儲訂單項,同樣也沒有保存訂單信息的表。首先,我們要創(chuàng)建兩個模型類。在真實世界里,我們很可能需要應用程序處理整個支付業(yè)務,包括信用卡處理(可能使用Payment模塊*或是Tobia L252。但是后端支付流程的整合涉及大量的規(guī)約資料,會將讀者的注意力從Rails這里移開,所以我們決定不考慮這方面的細節(jié)。這是因為line_items表中的每條記錄都需要同時與“訂單”和“貨品”關(guān)聯(lián)。 很多Rails開發(fā)者壓根兒就不去費心指定數(shù)據(jù)庫層面的約束(例如外鍵),完全靠應用代碼來保證正確。不過,如果數(shù)據(jù)完整性很重要的話,很多人(包括Dave和Sam)仍然認為:花一點小功夫多做一次檢查,可以節(jié)省徹夜在生產(chǎn)環(huán)境下調(diào)試的大把時間。depot rake db:migrate== 20080601000005 CreateOrders: migrating ===================================== create_table(:orders) == 20080601000005 CreateOrders: migrated () ============================== 20080601000006 CreateLineItems: migrating ================================== create_table(:line_items) == 20080601000006 CreateLineItems: migrated () =========================由于schema_migrations表中沒有這兩個遷移任務的記錄,所以運行db:migrate任務會實施這兩個最新的遷移任務。模型之間的關(guān)系Relationships between Models現(xiàn)在,數(shù)據(jù)庫已經(jīng)知道訂單、訂單項與貨品之間的關(guān)系了,但Rails應用還不知道。首先,(位于app/models目錄下),在其中調(diào)用has_many()方法。這些訂單項之所以被關(guān)聯(lián)到這個訂單,是因為它們引用了該訂單的id。class Product ActiveRecord::Base has_many :line_items ......end下面我們就要指定反向的關(guān)聯(lián):從訂單項到訂單和貨品的關(guān)聯(lián)。class LineItem ActiveRecord::Base belongs_to :order belongs_to :productendbelongs_to聲明告訴Rails:line_items表中存放的是orders表和products表中記錄的子記錄;如果沒有對應的訂單和貨品存在,則訂單項不能獨立存在。這些聲明到底管什么用?簡單說來,它們會給模型對象加上彼此導航的能力。li = (...)puts This line item was bought by {}另一方面,由于Order類有指向LineItem的has_many聲明,我們也可以從Order對象直接引用與之關(guān)聯(lián)的LineItem對象——它們都在一個集合中。創(chuàng)建表單搜集訂單信息Creating the Order Capture Form現(xiàn)在數(shù)據(jù)庫表和模型類都已經(jīng)到位,我們可以開始處理付賬的流程了。depot_p/app/views/store/div class=carttitle Your Cart/divtable %= render(:partial = cart_item , :collection = ) % tr class=totalline td colspan=2 Total/td td class=totalcell %= format_price() %/td /tr/table→ %= button_to Checkout , :action = 39。 %%= button_to Empty cart , :action = :empty_cart %我們希望checkout這個action能向用戶呈現(xiàn)一張表單,提示用戶在其中輸入將要存入orders表的相關(guān)信息:姓名、住址、電子信箱以及付款方式。 同樣,如果你一直緊跟我們的步伐,請記得要把action方法放在private聲明的前面。每個action開頭處都要去查找購物車,這已經(jīng)開始顯得有點乏味了,稍后我們會看到如何消除這些重復代碼。這是為了避免顧客直接進入付賬環(huán)節(jié)而生成空訂單。為了搜集用戶信息,我們將要使用表單。在控制器中,我們將order實例變量的值設(shè)為一個新建的Order模型對象。乍看上去這沒有什么特別的價值——這個新建的模型對象中所有的字段都還沒有值,所以表單也是空空如也。此時我們就希望模型對象中現(xiàn)存的數(shù)據(jù)能夠填入表單展示給用戶。隨后,當用戶點擊“提交”按鈕時,我們希望在控制器中將來自表單的新數(shù)據(jù)取回到模型對象中。在寫出最終版本的表單之前,我們先來看一個簡單的例子:% form_for :order, :url = { :action = :save_order } do |form| % p label for=order_name Name:/label %= :name, :size = 40 % /p% end %這段代碼有兩處有趣的地方。但它的工作還不僅如此,傳入的第一個參數(shù):order告訴該方法:它正在處理的是來自order實例變量的對象。:url參數(shù)會告訴輔助方法,當用戶點擊“提交”按鈕時應該做何操作??梢钥吹?,form_for實際上是搭建了一個Ruby的代碼塊環(huán)境(這個代碼塊在第6行結(jié)束)。在第4行,我們就用了這個上下文環(huán)境來向表單中添加文本字段。 form_for中的名字映射到了模型對象以及其中的屬性那么多的關(guān)聯(lián),真是看得人眼暈?,F(xiàn)在我們可以創(chuàng)建一個模板,把上述“搜集用戶信息”的表單放入其中。Rails為各種HTML層面的表單元素提供對應的表單輔助方法。Download depot_p/app/views/store/div class=depotform
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1