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
相关产品推荐
相关产品推荐

