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

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

作者: 稻草人_b788 | 来源:发表于2018-05-01 15:09 被阅读19次

    一、需求

    将一个表中的字段作为下拉菜单选项,显示在页面中
    例如:
    这里我想把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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/lonxrftx.html