假设有如下的下拉列表框
<select name="payment">
<option value="1">VISA</option>
<option value="2">MasterCard</option>
<option value="3">Switch</option>
</select>
在rails中实现这类列表框,可以使用如下几个方法
1) 使用select
api:
select(object, method, choices, options = {}, html_options = {})
例如:
<%= select( "payment", "id", { "Visa" => "1", "Mastercard" => "2"}) %>
或者使用map填充
<%= select ("payment", "id", @payments.map {|u| [u.name,u.id]}) %>
对应的控制器中可以使用下列代码获取内容:
@payments = Payment.find(:all)
@selected_payment = @payments[2]
2) 使用select_tag
api:
select_tag(name, option_tags = nil, options = {})
用法如下:
<%= select_tag "payment", "<option>VISA</option>" %>
<%= select_tag "payment", options_for_select([ "VISA", "MasterCard", "Switch" ], "MasterCard") %>
<%= select_tag "payment", options_for_select(%w{ VISA Mastercard Switch }) %>
%w是字符串数组的简写方式,字符串数组中的每个字符串用空格隔开
下面可以实现多选
<%= select_tag 'payment[]', options_for_select(@payments), :multiple => true, :size => 3 %>
@payments是在控制器中定义的hash:
@payments = {'Visa' => 1, 'Mastercard' => 2, 'Switch' => 3}
对应的控制器中可以使用下列代码获取内容:
params[:payment]
3)使用 collection_select
api:
collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})
用法如下:
<%=
@payments=Payment.find :all
collection_select(:payment, :id, @payments, :id, :name, options ={:prompt => "-Select a payment"}, :class =>"payment") %>
对应的控制器中可以使用下列代码获取内容:
selected_payment = params[payment][id]
分享到:
相关推荐
Select2用于Rails资产管道 是基于jQuery的选择框的替代品。 它支持搜索,远程数据集和结果的无限滚动。 select2-rails gem将Select2 jQuery插件与Rails资产管道集成在一起。 用法 安装select2-rails gem 将select2...
通常,这会涵盖如何引入CSS样式,如何在控制器和视图中使用辅助方法,以及如何处理前端和后端的数据交互。 6. **自定义日历插件**: 压缩包中的`calendar`可能是一个自定义的日历插件或库,用于增强Rails日期控件...
jquery-rails, 一个 gem,用于自动使用jQuery和 Rails 3 railsjQuery 面向 Rails 如此伟大。这里 gem 提供:jQuery 1.7.2jQuery UI 1.8.18 ( 仅适用于 javascript )jQuery UJS适配器assert_select_j
为了让MySQL在终端中可以正常使用,我们需要将MySQL的库路径添加到系统的`DYLD_LIBRARY_PATH`环境变量中,并设置别名以简化MySQL命令的使用。 - 显示隐藏文件:在终端中执行以下命令使隐藏文件可见。 ```bash ...
在 Rails 2.x 中,许多使用哈希参数的查询方法如 `:conditions`, `:include`, `:joins` 等在 Rails 3.1 中被标记为过时,虽然在3.1版本中仍然可用,但计划在 Rails 3.2 中完全移除。这些变化主要是为了引入一个新的...
通过在控制器中定义排序逻辑,并在视图中使用链接或按钮触发排序,用户可以根据需要对简历数据进行升序或降序排列。 8. **邮件发送**:Rails的ActionMailer模块允许开发者轻松地发送电子邮件。例如,当用户提交简历...
使用`pluck`或`select`只获取必要的字段,降低数据传输量。 2. **索引添加**:为频繁用于排序、分组或查询的字段创建索引,显著提升查询速度。但要注意,过多的索引会影响写操作,需平衡读写性能。 3. **数据库...
当InfluxDB遇到Rails,便催生了`influxdb-rails`这一优秀的库,它旨在简化在Rails应用中使用InfluxDB的过程。本文将通过对`influxdb-rails`源码的解析,深入理解两者的结合,揭示其内在的工作机制。 首先,`...
这就是在Rails中使用`acts_as_nested_set`实现中国省市地区三级联动选择的基本步骤。通过这个功能,用户可以方便地从丰富的层级数据中选择目标地区,同时保持良好的用户体验。注意,实际应用中可能需要考虑更多的...
- **块与闭包**:介绍块的概念及其与闭包的区别,以及如何在 Ruby 中使用它们。 #### 2.5 控制流技术 - **条件语句**:讲解 if、unless 等条件语句的使用方法。 - **循环结构**:介绍 while、for、each 等循环语句...
使用`accepts_nested_attributes_for`在模型中声明,然后在表单中使用`fields_for`方法: ```ruby |address_form| %> ``` 8. **标签和提示** Simple Form允许自定义输入字段的标签和提示信息。默认情况下...
Ajax-select_all-rails.zip,易于选择和取消选择所有复选框,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的...
在这里,我们有一个名为Event的模型,该模型具有start_time属性,将与Combined_time_select一起使用。 因为Rails的time_select字段提交了单独的值,所以当我们将字段组合为一个时,在控制器方面会产生一些开销。 ...
在Gemfile中包含select-multiple-rails gem 'select-multiple-rails' 然后运行bundle install 包括selectmultiple javascript 添加到您的app/assets/javascripts/application.js //= require select-multiple ...
货币选择 在Ruby on Rails项目中添加一个currency_select辅助函数,使您可以获取可用货币HTML select列表。 货币列表由。安装将以下内容添加到您的Gemfile中: gem 'currency_select'例子 currency_select ( 'user' ...
该宝石提供: jQuery 1、2和3 jQuery UJS适配器assert_select_jquery在Ruby测试中测试jQuery响应版本号从v2.1开始,jquery-rails gem遵循以下版本指南,以从Gemfile中更好地控制应用程序的jQuery版本: patch ...
# 在控制器中使用scope class CatsController def index @cats = Cat.all @tabby_cats = Cat.tabby @kitten_cats = Cat.kitten end end ``` #### `has_scope` Gem 除了在模型中定义`scope`之外,还可以使用`...
### Ruby on Rails中的ActiveRecord编程指南 #### 一、引言 在Ruby on Rails框架中,ActiveRecord是一种用于实现数据库抽象层的对象关系映射(ORM)工具。它为开发人员提供了一种简单而强大的方式来处理数据库记录...
安装将此行添加到您的应用程序的Gemfile中: gem 'multiple_select_rails' 然后执行: $ bundle或将其自己安装为: $ gem install multiple_select_rails用法包括多个选择javascript 添加到您的应用程序/资产/...
- 使用 RubyGems 安装 Rails 3: ```bash gem install rails -v 3.2.13 ``` 4. **创建测试项目** - 使用 Rails 3 创建名为 `phoneqq.com` 的测试项目: ```bash rails new phoneqq.com cd phoneqq.com ``...