Rails中的select使用

假设有如下的下拉列表框

<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]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值