Ruby on rails 结果使用RubyonRails将消息重复几次

Ruby on rails 结果使用RubyonRails将消息重复几次,ruby-on-rails,ruby,erb,Ruby On Rails,Ruby,Erb,我有以下代码: <% @lookup_coins.each do |x| %> <% if @symbol == '' %> <%= 'Sorry, but you forgot to write something, LOL'%> <% elsif @symbol == x %> <%= x["symbol"]%> <br/> <%= x["

我有以下代码:

<% @lookup_coins.each do |x| %>
    <% if @symbol == '' %>
        <%= 'Sorry, but you forgot to write something, LOL'%>
    <% elsif @symbol == x %>
        <%= x["symbol"]%> <br/> <%= x["name"]%>: <%= number_to_currency(x['quote']['USD']['price'].round(2) , :unit => "$ ") %> <br/> <%= x["cmc_rank"]%> <br/> 
    <% else 'Sorry, there was a mistake, try again'%>
<% end %>

我不知道如何以正确的方式执行它,看起来您无法匹配实际的
符号
值,但是希望
@symbol
能够完美地匹配哈希,而它不会

其次,每次通过循环打印“忘记写东西”消息时,都会出错。您可以摆脱循环,只需使用
find
立即定位条目,然后作为奖励,您可以更容易地检测到“遗漏”情况

只要看看你是否能找到一个匹配的条目,否则显示消息

修复程序如下所示:

<%- if @symbol.blank? -%>
  Sorry, but you forgot to write something.
<%- else -%>
  <%- found = @lookup_coins.find { |c| c['symbol'] == @symbol } -%>
  <%- if (found) -%>
    <%= found["symbol"]%> <br/> <%= found["name"]%>:
    <%= number_to_currency(found['quote']['USD']['price'].round(2), :unit => "$ ") %>
    <br/>
     <%= found["cmc_rank"]%> <br/> 
  <%- else -%>
    Sorry, there was a mistake, try again
  <%- end -%>
<%- end -%>

对不起,你忘了写东西了。

"$ ") %>

抱歉,出现错误,请重试
在这里使用
@symbol.blank?
='
更宽容,因为它也会拒绝一堆空格和/或制表符


提示:不要使用
,只需将文本原样放在那里即可。默认情况下是回显它。

看起来您无法匹配实际的
符号
值,而是希望
@symbol
与哈希完全匹配,但它不会匹配

<% if @symbol %>
<%@resultant_symbol = @lookup_coins['data'].select {|lookup_coin| lookup_coin["symbol"] == @symbol }%>
<%if @resultant_symbol.present?%>
   <% x = @resultant_symbol.first %>
   <%= x["symbol"]%> <br/> <%= x["name"]%>: <%= number_to_currency(x['quote']['USD']['price'].round(2) , :unit => "$ ") %> <br/> <%= x["cmc_rank"]%> <br/> 
<%else%>
   <%= @symbol = 'Sorry, there was a mistake, try again'%>
<%end%>
其次,每次通过循环打印“忘记写东西”消息时,都会出错。您可以摆脱循环,只需使用
find
立即定位条目,然后作为奖励,您可以更容易地检测到“遗漏”情况

只要看看你是否能找到一个匹配的条目,否则显示消息

修复程序如下所示:

<%- if @symbol.blank? -%>
  Sorry, but you forgot to write something.
<%- else -%>
  <%- found = @lookup_coins.find { |c| c['symbol'] == @symbol } -%>
  <%- if (found) -%>
    <%= found["symbol"]%> <br/> <%= found["name"]%>:
    <%= number_to_currency(found['quote']['USD']['price'].round(2), :unit => "$ ") %>
    <br/>
     <%= found["cmc_rank"]%> <br/> 
  <%- else -%>
    Sorry, there was a mistake, try again
  <%- end -%>
<%- end -%>

对不起,你忘了写东西了。

"$ ") %>

抱歉,出现错误,请重试
在这里使用
@symbol.blank?
='
更宽容,因为它也会拒绝一堆空格和/或制表符

提示:不要使用
,只需将文本原样放在那里即可。默认设置是回显它。


<% if @symbol %>
<%@resultant_symbol = @lookup_coins['data'].select {|lookup_coin| lookup_coin["symbol"] == @symbol }%>
<%if @resultant_symbol.present?%>
   <% x = @resultant_symbol.first %>
   <%= x["symbol"]%> <br/> <%= x["name"]%>: <%= number_to_currency(x['quote']['USD']['price'].round(2) , :unit => "$ ") %> <br/> <%= x["cmc_rank"]%> <br/> 
<%else%>
   <%= @symbol = 'Sorry, there was a mistake, try again'%>
<%end%>

:“$”%>



:“$”%>



在Ruby
for
中,没有真正使用
。这通常用
@lookup_硬币['data']表示。每个硬币都有| x |
。另外,如果您的第一个
if
分支测试条件
X
,那么您只需要一个
else
来测试相反的条件<代码>elsif!X毫无意义且容易出错。嘿,非常感谢你,我看到了一些示例,而且更好,但我认为我做错了什么,你介意帮我再修改一次我刚刚编辑的信息吗?通常你使用
处理你不想回应的内容,但这只会抑制输出中的换行符等。在Ruby中,
for
并没有真正使用。这通常用
@lookup_硬币['data']表示。每个硬币都有| x |
。另外,如果您的第一个
if
分支测试条件
X
,那么您只需要一个
else
来测试相反的条件<代码>elsif!X是毫无意义且容易出错的。嘿,非常感谢,我看到了一些示例,效果更好,但我认为我做错了什么,你介意帮我再修改一次我刚刚编辑的信息吗?通常你使用
来处理你不想回显的内容,但这只会抑制输出中的换行等。哦,很棒的提示!我想我必须在顶部和结尾添加,因为如果我不这样做,会出现一个错误,说x没有定义,但是当我添加这些时,消息会显示几次,因为在信息数据中我有几种货币。另外,你介意解释一下为什么你写得像这样而不是那样吗?很抱歉,我是新来的,如果你做
,你会在HTML输出中看到空行<代码>将抑制这些。只是让你的资料变得更小更容易阅读。那是个错误
x
应该被更改为
found
,这是我刚刚在一次编辑中完成的。这太棒了,在第一次“found”之后,我添加了一个“=”,因为它向我发送了一个错误,现在可以完美地工作了。以防您想添加到您的答案中。非常感谢你的帮助和酒意很好,更正了。不要忘记对任何有帮助的事情进行投票,并在他们解决问题时接受答案。这标志着它为其他人提供了一个解决方案。哦,很棒的提示!我想我必须在顶部和结尾添加,因为如果我不这样做,会出现一个错误,说x没有定义,但是当我添加这些时,消息会显示几次,因为在信息数据中我有几种货币。另外,你介意解释一下为什么你写得像这样而不是那样吗?很抱歉,我是新来的,如果你做
,你会在HTML输出中看到空行<代码>将抑制这些。只是让你的资料变得更小更容易阅读。那是个错误
x
应该被更改为
found
,这是我刚刚在一次编辑中完成的。这太棒了,在第一次“found”之后,我添加了一个“=”,因为它向我发送了一个错误,现在可以完美地工作了。以防您想添加到您的答案中。非常感谢你的帮助和酒意很好,更正了。不要忘记对任何有帮助的事情进行投票,并在他们解决问题时接受答案。这标志着它是为其他人提供的一个解决方案。嗨,谢谢你的帮助,我用前面的答案解决了它,但是,你介意解释一下你在做什么吗。现在?还有,第一,现在?将检查给定元素是否为nil、是否为空字符串“”以及是否为空数组(如果为数组,则为“”)!变量0.nil?&变量!=“”&&variable!=[]. 和select方法将返回匹配结果的数组,所以我使用了。首先从数组中获取第一个元素。非常感谢!!!如果你认为我的答案有用,你可以投赞成票!!!,谢谢。嗨,谢谢你的帮助,我用前面的答案解决了这个问题,但是,你呢