首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结果使用ruby on rails多次重复该消息。

结果使用ruby on rails多次重复该消息。
EN

Stack Overflow用户
提问于 2021-02-20 07:16:09
回答 2查看 57关注 0票数 1

我有这样的代码:

代码语言:javascript
复制
<% @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 %>

信息看起来像这样:

代码语言:javascript
复制
[{"id"=>1, "name"=>"Bitcoin", "symbol"=>"BTC", "slug"=>"bitcoin", "num_market_pairs"=>9713, "date_added"=>"2013-04-28T00:00:00.000Z", "tags"=>["mineable", "pow", "sha-256", "store-of-value", "state-channels", "coinbase-ventures-portfolio", "three-arrows-capital-portfolio", "polychain-capital-portfolio"], "max_supply"=>21000000, "circulating_supply"=>18633612, "total_supply"=>18633612, "platform"=>nil, "cmc_rank"=>1, "last_updated"=>"2021-02-20T07:45:02.000Z", "quote"=>{"USD"=>{"price"=>55541.51774356704, ...

我不知道怎样做才是正确的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-20 16:02:26

看起来您无法与实际的哈希值匹配,而是期望@symbolsymbol完全匹配,而实际情况并非如此。

其次,您还在每次通过循环打印“忘记写东西”消息,这是错误的。您可以摆脱循环,只需使用find立即定位条目,然后作为额外的好处,您可以更容易地检测到“未命中”条件。

只需查看是否能找到匹配的条目,否则将显示消息。

修复方法看起来像这样:

代码语言:javascript
复制
<%- 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?,因为它也会拒绝一堆空格和/或制表符。

提示:不要使用<%= '...' %>,只需按原样放置文本即可。默认设置是回显。

票数 2
EN

Stack Overflow用户

发布于 2021-02-20 17:19:25

代码语言:javascript
复制
<% 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%>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66286245

复制
相关文章

相似问题

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