一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

EasyTime - Ruby學(xué)習(xí)筆記 | Agile Web Development with Rails 翻譯(五十二)

 interguycn 2006-05-01

Agile Web Developmt with Rails 翻譯(五十二)

 

當(dāng)用戶提交表單時,原始的POSenT數(shù)據(jù)被發(fā)送回我們的應(yīng)用程序。

 


當(dāng)用戶提交表單時,原始的POST數(shù)據(jù)被發(fā)送回我們的應(yīng)用程序。Rails從表單中抽取字段并構(gòu)造params哈希表。簡單地values(如,由“路由器”從form“動作”中抽取的id字段。)按層次被存儲在哈希表中。如果參數(shù)的名字被花括號括住,則Rails假設(shè)它是另一個結(jié)構(gòu)化數(shù)據(jù)的一部分,并且構(gòu)造一個哈希表來保持這個values。在這個哈希表內(nèi)部,花括號內(nèi)的字符串被用做key鍵。如果參數(shù)的名字有多個花括號則重復(fù)這個處理。

 

 

 

 

 

最后,“模型”對象可以從哈希表中接受新的屬性值,這允許我們這樣寫

user.update_attributes(params[:user])

Rails會綜合這些??纯磮D17.2內(nèi)的.rhtml文件,你會看到“模板”使用了一組“幫助方法”來創(chuàng)建表單的HTML,如form_tag()text_field()方法。讓我們再看看這些“幫助方法”。

 

Form Helpers

“模板”內(nèi)的HTML表單應(yīng)該由form_tag()開始,用end_form_tag()結(jié)束。傳遞給form_tag()的第一個參數(shù)是哈希表,它用于在表單被提交時確定被調(diào)用的“動作”。這個哈希表接受與url_for()同樣的選項(289)??蛇x的第二個參數(shù)是另一個哈希表,讓你設(shè)置HTML表單標(biāo)記本身的屬性,做為一個特例,如果這個哈希表包含:multipart => true,表單將返回multipart表單數(shù)據(jù),允許它被用于文件的上傳(35017.8節(jié))。

<%= form_tag { :action => :save }, { :class => "compact" } %>

end_form_tag( ) 不接受參數(shù)。

 

Field Helpers

Rails提供了完整的“幫助方法”來支持text字段(通常是,hiddenpassword,和text 區(qū)域),radio按鈕,和checkbox。(它也支持帶有type=”file”<input>標(biāo)記,但我們在350頁的17.8節(jié)討論這些。)

 

----------------------------------------------------------------

Forms Containing Collections

如果你需要在一個表單上編輯來自同一“模型”的多個對象,把你傳遞給form“幫助方法”的實例變量的名字用花括號括起來。這會告訴Rails來包括對象的id做為字段名字的一部分。例如,下面“模板”可讓一個用戶選擇一個或多個與產(chǎn)品列表相關(guān)的imageURL。

<%= start_form_tag %>

<% for @product in @products %>

<%= text_field("product[]", ‘image_url‘) %><br />

<% end %>

<%= submit_tag %>

<%= end_form_tag %>

當(dāng)表單被提交給“控制器”時,params[:product]將是個含有哈希表的哈希表,它的每個鍵都是“模型”對象的id,并且相關(guān)的value是來自用于那個對象的表單的值。在“控制器”內(nèi),這會被用于更新所有像這樣的產(chǎn)品行

Product.update(params[:product].keys, params[:product].values)

-----------------------------------------------------

所有“幫助方法”至少接受兩個參數(shù)。第一個是實例變量(典型是個“模型”對象)的名字。第二個參數(shù)命名在設(shè)置字段值時,被查詢的實例變量的屬性。這兩個參數(shù)也一起生成HTML標(biāo)記的名字。參數(shù)即可是字符串也可以是符號;習(xí)慣上Rails使用符號。

所有“幫助方法”也接受一個可選的哈希表,典型地被用于設(shè)置HTMLclass。這通常是可選的第三個參數(shù),對于radio按鈕,它是第四個參數(shù)。However, keep reading before you go off designing a complicated scheme for using classes and CSS to flag invalid fields. As we’ll see later, Rails makes that easy.

 

Text Fields

text_field(:variable, :attribute, options)

hidden_field(:variable, :attribute, options)

password_field(:variable, :attribute, options)

分別為text, hidden, password類型構(gòu)造一個 <input> 標(biāo)記。缺省內(nèi)容將取自@variable.attribute。通常的選項包括:size => "nn" :maxsize => "nn"。

 

Text Areas

text_area(:variable, :attribute, options)

構(gòu)造一個兩維text區(qū)域(使用<taxtarea>標(biāo)記)。通常的選項包括: :cols => "nn" :rows => "nn"。

 

Radio Buttons

radio_button(:variable, :attribute, tag_value, options)

創(chuàng)建一個radio按鈕。通常對每個給出屬性都有多個radio按鈕,每個都帶有不同的標(biāo)記值。在按鈕被顯示時,被選擇的當(dāng)前屬性的值會有一個匹配這些標(biāo)記值中的一個。如果用戶選擇了一個不同的radio按鈕,它的標(biāo)記值將被存儲在字段中。

 

Checkboxes

check_box(:variable, :attribute, options, on_value, off_value)

創(chuàng)建一個與給定屬性密切相關(guān)的checkbox。如果屬性值為true,它將被檢查或者是在屬性值在被轉(zhuǎn)換成一個非零的整數(shù)時。

隨后返回給應(yīng)用程序的值被用來設(shè)置第四個和第五個參數(shù)。如果checkbox被檢查,則設(shè)置屬性的缺省值為“1”,否則為“0”。

 

Selection Lists

Selection lists are those drop-down list boxes with the built-in artificial intelligence that guarantees the choice you want can be reached only by scrolling past everyone else’s choice.

Selection lists 包含一個選項集。每個選項有一個顯示字符串和一個可選的value屬性。顯示字符串用戶可見,value屬性在選項被選擇后會被發(fā)送回應(yīng)用程序。對于通常的Selection lists,有個選項可能已被標(biāo)記為選擇;缺省地它的顯示字符串被顯示給用戶。對于multiselect lists,可以有多于一個選項被選擇,在這種情況下,它們的所有value都會被發(fā)送給應(yīng)用程序。

基本的 selection list 使用select()“幫助方法”創(chuàng)建。

select(:variable, :attribute, choices, options, html_options)

choices參數(shù)組裝selection list。此參數(shù)可以是任何可枚舉對象(如,數(shù)組,哈希表,數(shù)組庫查詢的結(jié)果集都是可接受的)。

choices的最簡單形式是一個字符串?dāng)?shù)組。每個字符串都成為下拉列表內(nèi)的一個選項,并且如果它們中的一個若匹配當(dāng)前@variable.attribute值,它將被選擇(這些例子假設(shè)@user.name被設(shè)置為Dave)

<%= select(:user, :name, %w{ Andy Bert Chas Dave Eric Fred }) %>

這會產(chǎn)生下面的HTML。

<select id="user_name" name="user[name]">

<option value="Andy">Andy</option>

<option value="Bert">Bert</option>

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    91熟女大屁股偷偷对白| 一区二区在线激情视频| 欧美加勒比一区二区三区| 免费在线成人午夜视频| 五月婷婷缴情七月丁香| 视频一区二区 国产精品| 精品熟女少妇av免费久久野外 | 九九热国产这里只有精品| 国产精品免费自拍视频| 欧美一区二区三区视频区| 最新午夜福利视频偷拍| 日韩美成人免费在线视频| 99视频精品免费视频播放| 亚洲第一区二区三区女厕偷拍| 91精品视频免费播放| 人妻亚洲一区二区三区| 极品熟女一区二区三区| 精品国产亚洲一区二区三区| 四季av一区二区播放| 视频一区二区黄色线观看| 国产黑人一区二区三区| 在线播放欧美精品一区| 东京热加勒比一区二区| 欧美日韩国产亚洲三级理论片| 亚洲熟女一区二区三四区| 午夜精品久久久99热连载| 精品欧美在线观看国产| 免费黄色一区二区三区| 婷婷一区二区三区四区| 十八禁日本一区二区三区| 日韩中文字幕在线不卡一区| 邻居人妻人公侵犯人妻视频| 国产福利一区二区久久| 亚洲精品一区二区三区免| 亚洲熟女熟妇乱色一区| 国产a天堂一区二区专区| 熟女乱一区二区三区四区| 黄色片国产一区二区三区| 欧美国产日产在线观看| 色婷婷日本视频在线观看| 亚洲成人黄色一级大片|