在rails中实现下拉框 和 radio button 显示大系统表的 处理方式

  • 下拉框的实现方式

由于设计方式的原因,所有的系统参数放入一张大表(sys_params)中。通过type_flag 来代表不同的参数类型。

比如 

学校的类型 有8种。code 分别是 1-11 . type_flag 是 '000E'

学校类型string1.大学、2.中学、3.小学、4.幼儿园、5.党校、6.培训中心、7.特殊学校、8.研究所、9.业余学校、A.职校、B.其他000E


现在需要 维护一张学校信息表。在具体的一个学校的信息中,需要输入学校类别,在界面上需要 使用下拉框的方式来处理。

实现的步骤。

  1.  在schoole.rb model文件中 ,加入belongs_to .

    belongs_to :sys_param, -> { where type_flag: '000E' }, :foreign_key => :lx ,:primary_key => :id

    表示的含义是 外键是 lx(类型),对应的是 sys_param中的 id .其中需要满足的条件 是 type_flag = '000E'

  2. 在show.html.erb中 使用simple_form 中的 association 来处理成 下拉框

    <%= f.association :sys_param, collection: SysParam.all().where(:type_flag => '000E'), :input_html => { :class => 'span3 chzn-select'}, :label => GisSchool.human_attribute_name(:lx), :label_method =>  :display_school_lx_name  %>


  3. 注意  collection: SysParam.all().where(:type_flag => '000E') 语句。只有这样,才会把 满足 条件的 (type_flag == '000E') 的条件显示在 下拉框中,否则是所有数据显示在下拉框中。
  4. :label_method =>  :display_school_lx_name 这个语句的左右,是定制显示 下拉框中显示的内容。在sys_param的model中这样定义。

    def display_school_lx_name
       "#{code} - #{value}"
    end

  5. options       使用 select2 的可查询的下拉框组件。

    http://ivaynberg.github.io/select2/index.html

  • 使用 radio button 的方式的实现 

          <div class="btn-group span_left" data-toggle="buttons">
            <%=  f.collection_radio_buttons :tqn,  SysParam.all().where(:type_flag => '0009'), :id, :name, { item_wrapper_tag: false } do |b| %>
                 <%=  b.label(:class => 'btn btn-primary'){ b.radio_button + b.text }  %>
            <% end %>
          </div>

其中 SysParam 不需要和 这个model进行关联。
其中:id 和 :name 是 SysParmas中的 字段名称。name是要显示在radio 上的文字。id 是 要传递和保存的 内容。

code 和 name 是SysParam 中的字段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值