Rails表單幫助方法使用之(select)

基本工具請參考 Rails表單幫助方法
這裏面記錄了一些使用上的方法用到我會補充如果有問題大家可以在下面留言我會補充到上面開始的可能很簡單請大家諒解!
在Ruby on Rails中真的有一堆Select helper可以用,我們經常容易混淆。常見的有三個
select, select_tag, collection_select
我們先來看看一個基本的下拉式選項骨架

<select name="ROR">
<option value="1">ROR1</option>
<option value="2">ROR2</option>
<option value="3">ROR3</option>
</select>

在一個下拉式選項中,有一些是必備的信息,像”name”、”value”與”text”三個,在回傳信息給Serve時,”name”將是接收信息用的,而”value”會傳回被選的值,而”text”則是使用者會看到的字,依上面的例子來講,ROR1、ROR2、ROR3就是屬於”text”
開始講講哪三種Select helper
select:

select(object, method, choices, options = {}, html_options = {})

在ActionView::Helpers::FormOptionsHelper中定義
object事一個實體化變數,這裏很明顯的就是要擺上model物件嘛!
method則是object的一個屬性,也是資料表中的對應項目
choices就是要被選的選項,可以事陣列或者事哈希(Hash)
options與html_options則是一些選項
來這裏舉個例子吧

<%= select("project", "teacher_id", @teachers.collect{|t| [t.name, t.id]}, { :include_blank => false }) %>
<%= select("project", "student_id", {"CFC" => '1', "EF" => '2'}) %>

第一個例子中,@teachers在Controller是這樣的

@teachers = Teacher.find(:all, :select => 'id, name')

select_tag:

select_tag(name, option_tags = nil, options = {})

在ActionView::Helpers::FormTagHelper中定義
如果你很喜歡動手打option的話.. 那用select_tag準沒錯啦!
在select_tag中,name將會是params所接收值所用的鍵
直接看範例

<%= select_tag 'user', "<option>CFC</option>" %>

這時在Controller中將會用params[:user]來接收傳過來的值
但是select_tag也可以搭配options_for_select或者options_from_collection_for_select一起使用.. 來看一個範例吧

<%= select_tag('sid[]', options_from_collection_for_select(@students, 'id', 'name'), :multiple => true)%>

因爲加上了:multiple,所以可以接受多值選擇,這時在Controller接收到的sid將會是一個陣列,這也是我所卡住的地方..

collection_select:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

在ActionView::Helpers::FormOptionsHelper中定義
如果信息來源是數據庫的話,可以使用這個來做下拉式選項。
這個Object不用我說,就是你的model
method呢?當然就是欄目了
其實說起來,這只是select+options_from_collection_for_select的組合啦!
範例:

<%= collection_select(:payment, :id, @payments, :id, :name, options ={:prompt => "-Select a continent"}, :class =>"payment") %>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章