StackOverflow社区
我有两个表“id”(整数)和“num_pot”(varchar 255)与以下数据信息的下表:
|transformers|
|id| |num_pot|
1 1.0
2 2.12/6
3 5/6/8
4 2.9/40
5 2.1
字符串
下面是Transformer_controller.rb,它显示所有注册表
def index
@transformers = Transformer.all
end
型
我试图在数组视图index.html.erb上显示以下信息
<% @transformers.each do |array| %>
<%= array.num_pot %>
<% end %>
型
我正在尝试创建代码来检查字符串并比较num_pot列:
|num_pot|
1.0 # CHECK THE GREATEST VALUE = 1.0
2.12/6 # CHECK THE GREATEST VALUE = 6
5/6/8 # CHECK THE GREATEST VALUE = 8
2.9/40 # CHECK THE GREATEST VALUE = 40
2.1 # CHECK THE GREATEST VALUE = 2.1
型
如何显示以下数据(字符串上的最大值):
|num_pot|
1.0
6
8
40
2.1
型
我尝试了以下代码使用“max”,但我得到了错误:
<% @transformers.each do |array| %>
<%= array.num_pot.max(1) %>
<% end %>
undefined method `max' for "2.12/6":String
型
我会很感激任何关于它的评论
2条答案
按热度按时间0wi1tuuw1#
num_pod
列中的值就像你已经写过的那样-字符串而不是一个数字列表。这意味着,要只呈现其中一个值,并且只呈现其中最大的值,你首先需要将字符串拆分成几个部分。然后将这些部分转换为浮点数,以便能够比较和选择最大的值。让我们举个例子:
字符串
最后两个步骤可以简化为
max_by(&:to_f)
,因为在您的情况下,可以通过它们的浮点值比较它们的值,但返回要呈现的字符串值。使用此方法,您应该通过将视图更改为:
型
或者,为了使其更容易在视图中阅读和可重用,将此方法添加到
app/models/transformer.rb
中的Transformer
模型中:型
并将视图更改为:
型
wtlkbnrh2#
在这种情况下使用SQL是什么意思?
在控制器内准备所有数据
字符串
并在视图中呈现
型
在这里你可以看到在线DB fiddle:
https://www.db-fiddle.com/f/hEETjWuvr9sc5k4XfMeH8w/0
它是如何工作的:
型