Ruby on Rails中select使用方法

130 篇文章 0 订阅


在Ruby on Rails中真的有一堆Select helper可以用,我们经常容易混淆。常见的有三个..

select, select_tag, collection_select(其余的什么select_date那些不谈)
我们先来看看一个基本的下拉式选项骨架
  1. </p>
  2. <select name="ROR">
  3. <option value="1">ROR1</option><br/>
  4. <option value="2">ROR2</option><br/>
  5. <option value="3">ROR3</option><br/>
  6. </select>
  7. <p>

在一个下拉式选项中,有一些是必备的信息,像”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则是一些选项
来这里举个例子吧
  1. <%= select("project", "teacher_id", @teachers.collect{|t| [t.name, t.id]}, { :include_blank => false }) %>
  2. <%= select("project", "student_id", {"CFC" => '1', "EF" => '2'}) %>
  3. 第一个例子中,@teachersController是这样的
  4. @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所接收值所用的键
直接看范例
  1. <%= select_tag
    'user', "<option>CFC</option>" %>
  2. 这时在Controller中将会用params[:user]来接收传过来的值
  3. 但是select_tag也可以搭配options_for_select或者options_from_collection_for_select一起使用.. 来看一个范例吧
  4. <%= select_tag('sid[]', options_from_collection_for_select(@students, 'id', 'name'), :multiple => true)%>
  5. 因为加上了: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的组合啦!
范例:
  1. <%= collection_select(:payment, :id, @payments, :id, :name, options ={:prompt => "-Select a continent"}, :class =>"payment") %>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值