将一个表中的字段作为选项制作下拉菜单并进行前台验证

一、需求

将一个表中的字段作为下拉菜单选项,显示在页面中
例如:
这里我想把lessons表中的name字段中的值作为下拉选项,选中某个选项后,然后存入到另外一个contracts表的course字段中

二、效果图

image

三、实现方案

(一)使用select_collection

<%= collection_select(:course,:id,Lesson.all,:id,:name,{:prompt => '请选择'},required: true) %>

其中:

  • :prompt => '请选择'将选项的默认选项设为"请选择"
  • required:true用来前台验证,如果不进行选择,则提示用户进行选择

(二)使用f.select

<%= f.select :course,Lesson.pluck(:id,:name),{},require: true %>

其中:

  • 通过chrome检查网页,可以看到: lesson表中的id字段中的内容被解析为下拉菜单的value,lessons表中的name字段中内容被解析为下拉选项


    image
  • {}是空的hash,将作为下拉菜单的默认选项,因此默认情况显示下拉菜单中的内容为空
  • pluck查询出的内容是数组,当将一个字段作为参数,查询出的是一个一维度数组,当将两个及两个以上的字段作为参数,查询出来的是二维数组,如图:


    image

(三)使用select_tag

<%= select_tag :learn_fare, options_for_select(Lesson.pluck(:price,:id).unshift(nil)),required: true %>

四、补充:

二维数组中只有其中的每个一维数组的元素为两个,才能通过to_h的方法可以转换成hash,否则会提示参数错误


image

五、参考资料

1.collection_select

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,309评论 19 139
  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 1,966评论 0 10
  • --写给自己看的, 程序员面试 读书笔记 公司招聘的原因 1 公司计划扩张 公司制订了中长期发展计划,招聘也必然是...
    moneyice阅读 611评论 0 1
  • “#本文参加‘青春’大赛,本人保证本文为本人原创,如有问题则与主办方无关,自愿放弃评优评奖资格” 作者:赵晨宇 学...
    赵昉阅读 256评论 0 0

友情链接更多精彩内容