首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails的人高下拉列表

Rails的人高下拉列表
EN

Stack Overflow用户
提问于 2012-04-19 13:22:38
回答 4查看 1.4K关注 0票数 3

我需要一个人类高度的下拉列表,例如5'2,5'3,5'4,等等。最好是像4'0到8'0这样的东西。有没有宝石或者插件?我好像找不到一个。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-19 18:27:47

假设您无论如何都会以英寸为单位存储它,这样您就可以生成要传递给options_from_collection_for_select的@heights,如下所示:

代码语言:javascript
复制
(56..112).to_a.map { |inch| { id: inch.to_s, name: (inch/12).floor.to_s+'\''+(inch%12).to_s } }

也许英寸到字符串的转换被分解成了一个辅助方法。

票数 3
EN

Stack Overflow用户

发布于 2012-04-19 15:10:00

我不确定这是不是最好的方法,但是你可以试试这样的方法

代码语言:javascript
复制
@heights = (4..7).to_a.collect{|o| 0.upto(11).to_a.collect{|k| ["#{o.to_s+'\'' + k.to_s}",o.to_s + k.to_s]}}.inject([]){|s,v| s | v}

或者更好,

代码语言:javascript
复制
@heights = (4..7).to_a.collect{|o| 0.upto(11).to_a.collect{|k| ["#{o.to_s+'\'' + k.to_s}",o.to_s + k.to_s]}}.flatten(1)

这将给出一个结构,例如,

代码语言:javascript
复制
[["4'0", "40"], ["4'1", "41"], ["4'2", "42"], ["4'3", "43"], ["4'4", "44"]] # and so on..

现在,要为选择选项准备此结构,您可以使用:

代码语言:javascript
复制
@heights.map { |name, id| OpenStruct.new(:value => id, :name => name) } 

这将为每个height元素提供一个名称和值对,可用于选择标签的选项

您可能需要包含OpenStruct,因此请使用

代码语言:javascript
复制
require 'ostruct' 

将此代码放入select标签中:

代码语言:javascript
复制
<%= select_tag "Height", options_from_collection_for_select(@heights,'value','name'), html_options = { :onChange=> "height_changed();"} %>
票数 2
EN

Stack Overflow用户

发布于 2016-04-11 23:06:34

这是一个很好的人类身高https://github.com/AlexanderZaytsev/height的宝石。

编写帮助器

代码语言:javascript
复制
def height
(121..244).to_a.collect{|k| ["#{Height.new(k).to_s(:default, :metric)}","#{Height.new(k).to_s(:default, :imperial)}","#{Height.new(k).feet}"]}
end

输出

代码语言:javascript
复制
[["1m 21cm", "4 ft 0 in", "4"], ["1m 22cm", "4 ft 0 in", "4"], ["1m 23cm", "4 ft 0 in", "4"], ["1m 24cm", "4 ft 1 in", "4.08"]

使用模板中的方法

代码语言:javascript
复制
<%= f.input :how_tall_are_you, label: "How tall are you ? (in feet  and Cm)", collection: height.map { |cm, inc, value| ["#{cm} - #{inc}", "#{value}"] }  ,prompt: "-Please select one-",input_html: { class: 'form-control input-lg', required: true} %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10222118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档