在Ruby on Rails中真的有一堆Select helper可以用,我们经常容易混淆。常见的有三个..
select, select_tag, collection_select(其余的什么select_date那些不谈)
我们先来看看一个基本的下拉式选项骨架

</p>
<select name="ROR">
<option value="">ROR1</option><br/>
<option value="">ROR2</option><br/>
<option value="">ROR3</option><br/>
</select>
<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则是一些选项

来这里举个例子吧

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

<%= select("project", "student_id", {"CFC" => '', "EF" => ''}) %>
第一个例子中,@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>" %>
  1. 这时在Controller中将会用params[:user]来接收传过来的值
  2. 但是select_tag也可以搭配options_for_select或者options_from_collection_for_select一起使用.. 来看一个范例吧
  3. <%= select_tag('sid[]', options_from_collection_for_select(@students, 'id', 'name'), :multiple =>true)%>
  4. 因为加上了: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") %>

【转】Ruby on Rails中select使用方法的更多相关文章

  1. ruby on rails 中render的

    Ruby rails页面跳转代码如下: 1.render(:text => string) 2.render(:inline => string, [:type => "r ...

  2. 理解ruby on rails中的ActiveRecord::Relation

    ActiveRecord::Relation是rails3中添加的.rails2中的finders, named_scope, with_scope 等用法,在rails3统一为一种Relation用 ...

  3. Ruby on Rails中的Rake教程(Rake如何把我灌醉!)

    下面是我们使用Rake任务的例子: 1.给列表中的用户发送邮件 2.每晚数据的计算和报告 3.过期或重新生成缓存 4.备份数据和svn版本(how's this : subversion reposi ...

  4. json格式在ruby和rails中的注意事项

    #虚拟网络拓扑的json数据 def topodata #@vnic = Vnic.all #flash.now[:notice] = 'Message sent!' #flash.now[:aler ...

  5. rails中validates_confirmation_of验证方法无效的解决办法

    rails的model中提供了很多种自带的验证方法,validates_confirmation_of可以验证变量xxx和xxx_confirmation是否相等:这可以用于验证2遍输入的密码是否一致 ...

  6. ruby on rails 中render的使用

    最近写ror,因为比较菜,很多东西不知道,只能看一点查一点了 render 先上点搜集的常用方式 render :action => "long_goal", :layout ...

  7. rails中select不能响应多选的解决办法

    在rails4.2中如果你写如下代码,post的select无法传回多选内容,即使你select设置为多选: <select id='id_size' name='name_size' mult ...

  8. linux c中select使用方法

    1.select函数作为定时器使用    it_value.tv_sec = 0;    it_value.tv_usec = 100000:    select(1,NULL,NULL,NULL,& ...

  9. Ruby on Rails 中你使用了Kaminari 后,千万不要再引入will_pagination 这个Gem 了

    今日做开发的时候发现的这个问题 发现无论怎样配置都不能使用Kaminari 的Per 这个功能,分页大小也固定在了30 最开始还以为是Ransack 这个Gem 影响的,上网搜了很久发现没有 最后仔细 ...

随机推荐

  1. centos6安装nginx最详细步骤

    第一步:在centos下面下载 nginx          wget http://nginx.org/download/nginx-1.2.9.tar.gz 解压 tar zxf nginx-1. ...

  2. JDBC详解1

    JDBC详解1 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中u ...

  3. 3.写一个hello world页面

    经过1和2的学习,现在已经可以正常启动Django了,这一节说怎么写一个hello world页面,所有的环境基础就是1和2中搭建的 1.在app模块中添加页面 具体为 hello_django\he ...

  4. Jquery定义对象( 闭包)

    转自:http://www.cnblogs.com/springsnow/archive/2010/06/03/1750832.html 例一:添加对象的静态属性 声明一个对象$.problemWo, ...

  5. 目标检测--之RCNN

    目标检测--之RCNN 前言,最近接触到的一个项目要用到目标检测,还有我的科研方向caption,都用到这个,最近电脑在windows下下载数据集,估计要一两天,也不能切换到ubuntu下撸代码~.所 ...

  6. 【整理学习Hadoop】Hadoop学习基础之一:服务器集群技术

            服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任 ...

  7. 3django url name详解

    打开urls.py from django.conf.urls import url from django.contrib import admin from calc import views a ...

  8. Data Structure Trie: suffix problem

    http://www.geeksforgeeks.org/suffix-array-set-1-introduction/ http://www.geeksforgeeks.org/pattern-s ...

  9. 【leetcode刷题笔记】Next Permutation

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  10. linux 文件存取 软硬联接的区别

    一.linux文件存取过程 在linux系统中根目录是自引用的,比如要找 /etc/sysconfig/networkscripts/ifcfg-0文件 先根据根目录/ 的inode号,在inode ...