rails form helper select

本文介绍了一个使用Ruby on Rails实现的表单元素选择器示例,展示了如何通过Rails助手方法来创建下拉列表,用于从当前用户的发票地址及联系人中进行选择。
<%= select :booking_note, :fee_invoice_send_address, User.find(session[:user_id]).fee_invoice_send_addresses.collect(&:address), {}, {:class => "ext_combobox"} %>

<%= select :booking_note, :shipper_attn_name, User.find(session[:user_id]).contact_people.collect {p| [ p.name, p.id ] }, {:include_blank => true}, {:id => "booking_note_shipper_cb"} %>
Rails表单中,复选框是一种常用的表单元素,用于让用户从多个选项中选择一个或多个。以下是关于Rails表单中复选框的使用方法和相关知识。 ### 创建复选框 在Rails的视图文件中,可以使用`check_box`方法来创建复选框。以下是一个简单的示例,假设要创建一个用于选择爱好的复选框组: ```ruby # 在视图文件(如app/views/users/_form.html.erb)中 <%= form_with(model: user, local: true) do |form| %> <p> <%= form.label :hobbies, "爱好" %> <% %w[阅读 运动 音乐].each do |hobby| %> <%= form.check_box :hobbies, { multiple: true }, hobby, nil %> <%= form.label :hobbies, hobby %> <% end %> </p> <p> <%= form.submit %> </p> <% end %> ``` 在上述代码中,`check_box`方法的参数解释如下: - 第一个参数`:hobbies`是表单字段的名称,它对应于模型中的一个属性。 - `{ multiple: true }`表示这是一个可以选择多个选项的复选框组。 - 第三个参数`hobby`是该复选框的值,当用户选中该复选框时,这个值会被提交到服务器。 - 第四个参数`nil`是该复选框的默认选中状态,这里传入`nil`表示默认不选中。 ### 在控制器中处理复选框数据 在控制器中,可以通过`params`对象来获取用户提交的复选框数据。以下是一个简单的示例: ```ruby # 在控制器(如app/controllers/users_controller.rb)中 class UsersController < ApplicationController def create @user = User.new(user_params) if @user.save redirect_to @user, notice: '用户创建成功' else render :new end end private def user_params params.require(:user).permit(:name, hobbies: []) end end ``` 在`user_params`方法中,使用`hobbies: []`来允许接收多个复选框的值。这样,当用户提交表单时,`params[:user][:hobbies]`将是一个包含用户选中的所有爱好的数组。 ### 模型中处理复选框数据 在模型中,可以定义一个方法来处理复选框数据。例如,可以在模型中使用`serialize`方法来将复选框数据存储为数组: ```ruby # 在模型文件(如app/models/user.rb)中 class User < ApplicationRecord serialize :hobbies, Array end ``` 这样,Rails会自动将复选框数据存储为数组,并在读取时将其还原为数组。 ### 复选框的选中状态 可以通过传入一个布尔值来设置复选框的默认选中状态。例如: ```ruby <%= form.check_box :hobbies, { multiple: true }, '阅读', @user.hobbies.include?('阅读') %> ``` 在上述代码中,`@user.hobbies.include?('阅读')`用于判断用户的爱好列表中是否包含“阅读”,如果包含,则该复选框将默认选中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值