【问题标题】:How to present json values with html erb template as an array如何使用 html erb 模板将 json 值呈现为数组
【发布时间】:2014-06-20 19:36:59
【问题描述】:

我正在向 httparty 发出一个简单的请求,我还想用下面的代码将它们显示为一个列表。

  def index
    reqd = HTTParty.get("https://api.dynadot.com/api3.xml?key=xxxxxx&command=search&domain0=mydomain.com&domain1=mydomain.net").body
    @results = Hash.from_xml(reqd)
  end

输出是

{"Results"=>{"SearchResponse"=>[{"SearchHeader"=>{"SuccessCode"=>"0", 
    "DomainName"=>"mydomain.com", "Status"=>"success"}}, {"SearchHeader"=>{"SuccessCode"=>"0", 
    "DomainName"=>"mydomain.net", "Status"=>"success", "Available"=>"no"}}]}}

我如何使用它才能使我的 index.html.erb 看起来像这样

<% @results.each do |result| %>
    ##can call any value here like domain name, status etc
<% end %>

【问题讨论】:

  • 你为什么不直接使用 jbuilder gem?本机功能...如果您不这样做,请告诉我,以便我按照您的条件回答...
  • 试试&lt;% @results['SearchResponse'].each do |response| %&gt;
  • 我不想用 json 来表示它。我想使用普通的 html
  • @RubyRacer 我得到了 nil:NilClass 的未定义方法 `each'
  • 我没听懂你。您想在 html 中显示哈希/数组结构吗?

标签: ruby-on-rails json ruby-on-rails-3 ruby-on-rails-4


【解决方案1】:

我不确定你想要什么,也许这会有所帮助:

@results = {"Results"=>{"SearchResponse"=>[{"SearchHeader"=>{"SuccessCode"=>"0",
    "DomainName"=>"mydomain.com", "Status"=>"success"}}, {"SearchHeader"=>{"SuccessCode"=>"0",
    "DomainName"=>"mydomain.net", "Status"=>"success", "Available"=>"no"}}]}}

@results["Results"]["SearchResponse"].map { |x| x["SearchHeader"] }.each do |s| 
  puts s["SuccessCode"]
  puts s["DomainName"] 
  puts s["Status"]
end

结果:

mydomain.com
success
mydomain.net
success

【讨论】:

  • 这是我得到的回报 [{"SuccessCode"=>"0", "DomainName"=>"mydomain.com", "Status"=>"success", "Available"= >"no"}, {"SuccessCode"=>"0", "DomainName"=>"mydomain.net", "Status"=>"success", "Available"=>"no"}]
  • 感觉就像你的结果一样快到了。
  • 我的意思是在.each 块中,您可以使用您的域和状态。如果你想得到数组什么的,那就另当别论了。
  • 它按预期工作。` @results = @results["Results"]["SearchResponse"].map { |x| x["SearchHeader"] } `
猜你喜欢
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-31
  • 2012-12-11
  • 2018-08-30
  • 2019-06-25
相关资源
最近更新 更多