【问题标题】:Rails 4 XML to HTMLRails 4 XML 到 HTML
【发布时间】:2014-03-29 10:46:43
【问题描述】:

我是 Rails 的新手,并试图在我的视图中将给定的 XML 文件呈现为 HTML。我已经搜索了一段时间,但我只能找到有关如何将 XML 呈现为 HTML 的主题。我不打算做任何花哨的事情,只是在 CSS 中稍微设置一下输出的样式。在我缺少的 Rails 中有一些明显的解决方案吗?

如果有一个我可以使用的输出就像一个 db 请求结果一样会很有用,例如:

@titles.each do |title|
  title.author
  title.date
end

谢谢!

【问题讨论】:

  • 如果您将ruby 标签添加到您的问题中,您将获得有关Nokogiri 的建议。我没有这方面的经验
  • 好的,谢谢我添加了。
  • 你想用 xml 发送响应吗?
  • 很抱歉,我刚刚注意到我错误地编辑了我的问题。我更新了它,所以它现在应该更正确和详细。 @Bharatsoni 不,我想呈现来自其他站点的 XML 响应,就像来自我自己的数据库一样。
  • 您应该提供一个额外的块,其中包含您想要解析的 XML 类型。这样人们就有了开始的东西。像这样的问题是模糊地编写任何代码作为答案。顺便说一句:Stackoverflow 显示 this link 是相关的,也许它有帮助。

标签: html ruby-on-rails ruby xml render


【解决方案1】:

您可以使用具有 XML 解析器的 Nokogiri。假设您正在使用一些 API 来获取 XML 响应,那么您可以执行以下操作:

xml = Nokogiri::XML(open(your_api_url))
items = Hash.from_xml(xml.to_xml)

注意:您需要在 xml var 上调用 .to_xml,因为在此之前,它是一个 Nokogiri 对象。

items 现在是一个 Ruby 哈希。例如,您现在可以从中构建一个 Ruby 对象,然后您可以像使用其他所有 ActiveRecord 对象一样使用它。如果有多个entry,则将所有项目保存在一个数组中可能会很有用:

@all_items = Array.new

items['item'].map do |item|
  new = Item.new
  new.title = item['title‘]
  # an so on..

  @all_items << new
end

现在,在您看来,您可以这样做:

<% @all_items.each do |item| %>
  <%= item.title %>
<% end %>

要像上面那样工作,你需要这两个宝石:

require 'nokogiri'
require 'open-uri'

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 2023-03-15
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多