You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RoR视图中如何展示JSON变量的指定属性?

解决Rails视图中JSON属性的展示问题

嘿,我懂你现在的困扰——直接输出整个哈希对象肯定不是你想要的效果,咱们来一步步调整:

第一步:简化控制器代码(可选但推荐)

你原来的控制器代码可以精简一下,不用重复给service赋值,看起来更清爽也更易维护:

def list
  # 用Rails.root.join拼接路径更安全,避免手动拼接出错
  file_path = Rails.root.join("lib", "service.json")
  # 一次性完成文件读取和JSON解析
  @yearbook = JSON.parse(File.read(file_path))
end

如果希望解析后的哈希用符号作为键(比如用item[:name]而非item["name"]),可以给JSON.parse加个参数:

@yearbook = JSON.parse(File.read(file_path), symbolize_names: true)

第二步:修改视图代码,展示指定属性

你现在的视图直接输出item,会触发哈希的to_s方法,所以显示成了完整的哈希字符串。咱们要直接提取name和description属性,顺便修正HTML结构(<tr>标签里应该用<td>单元格,而不是<p>哦):

如果JSON解析后是字符串键(默认情况):

<% @yearbook.each do |item| %>
  <tr>
    <td>name: <%= item["name"] %></td>
    <td>description: <%= item["description"] %></td>
  </tr>
<% end %>

如果用了symbolize_names: true参数:

<% @yearbook.each do |item| %>
  <tr>
    <td>name: <%= item[:name] %></td>
    <td>description: <%= item[:description] %></td>
  </tr>
<% end %>

这样浏览器就会按照你想要的格式展示内容:name: ..., description: ...,同时HTML结构也更规范啦~

内容的提问来源于stack exchange,提问作者HCKRMVT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:32:25