【发布时间】:2018-03-23 10:29:07
【问题描述】:
我知道我遗漏了一些可能非常明显的东西。我正在尝试在 Rails5 视图中迭代 JSON 数组。我尝试了几件事,但似乎无法获得要渲染的正确项目。下面的代码将{"name"=>"Large Plaque", "price"=>"2500"} {"name"=>"Small Plaque", "price"=>"1500"} 呈现给我的视图。
config/plaque_data.json
{
"products": [
{
"name": "Large Plaque",
"price": "2500"
},
{
"name": "Small Plaque",
"price": "1500"
}
]
}
控制器/plaqueorders_controller.rb
...
def new
@plaqy = JSON.load File.read('config/plaque_data.json')
end
...
views/plaqueorders/new.html.erb
...
<% @plaqy['products'].each do |k, v| { name: k, price: v } %>
<%= k %>
<% end %>
...
【问题讨论】:
-
你试过查看
JSON.load(File.read('config/plaque_data.json'))的输出吗? (例如在您的 irb 控制台中) -
@MrYoshiji 这是控制台中打印的内容
=> {"products"=>[{"name"=>"Large Plaque", "price"=>"2500"}, {"name"=>"Small Plaque", "price"=>"1500"}]} -
您确实应该指定该文件的完整路径,例如
Rails.root.join('config/plaque_data.json')。 -
另外,如果
plaque_data.json文件不打算更改,您可能希望在服务器启动时加载它并缓存它,而不是每次执行此操作时都读取它
标签: ruby-on-rails json ruby ruby-on-rails-5