Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将带有数组的json解析为带有集合的presenter?_Ruby On Rails_Ruby_Json_Presenter - Fatal编程技术网

Ruby on rails 如何将带有数组的json解析为带有集合的presenter?

Ruby on rails 如何将带有数组的json解析为带有集合的presenter?,ruby-on-rails,ruby,json,presenter,Ruby On Rails,Ruby,Json,Presenter,我通过电子邮件从外部服务JSON收到当前用户的培训信息 { “id:”5357c5d17303b5357c5d173078”, “email”:”some@email.com”, ”trainings”:[ { “training_id“: “5357c4e5d61f15357c4e5d622f“, “name”: ”training 1”, “state”: “started”

我通过电子邮件从外部服务JSON收到当前用户的培训信息

{
    “id:”5357c5d17303b5357c5d173078”,
    “email”:”some@email.com”,
    ”trainings”:[
        {
            “training_id“: “5357c4e5d61f15357c4e5d622f“,
            “name”: ”training 1”,
            “state”: “started”
        },
        {
            “training_id“: “5357af490fcda5357af490fd15“,
            “name”: ”training 2”,
            “state”: “finished”
        }
    ]
}
我想解析这个JSON并将其显示在我的页面上。所以我想到了主持人

class EducationPresenter
  attr_reader :email, :trainings

  def initialize json
    @email = json['email']
    @trainings = json['trainings']
  end
end

所以现在我可以在我的观点中使用它:

Email: <%= @presenter.email %>
<% @presenter.trainings.each do |training| %>
Training: <%= training['training_id'] %>
<% end %>
@presenter.training.each {|t| t.state }
演讲者是上帝处理这个问题的方式吗?

使用:

阅读以理解这一点,同时也要理解这一点

现在创建对象

 @education_presenter = EducationPresenter.new(json_string)
和视图:

Email: <%= @education_presenter.presenter.email %>
<% @education_presenter.presenter.trainings.each do |training| %>
Training: <%= training['training_id'] %>
<% end %>
Email: <%= @education_presenter.presenter.email %>
<% @education_presenter.presenter.trainings.each do |training| %>
Training: <%= training['training_id'] %>
<% end %>