【问题标题】:to_builder method returns empty hash from a Jbuilder viewto_builder 方法从 Jbuilder 视图返回空哈希
【发布时间】:2015-01-07 15:12:58
【问题描述】:

假设我有一个用户类

class User
  def to_builder
    json = Jbuilder.new
    json.user_id self.id
    json.firstname self.firstname
    json.lastname self.lastname
    json.email self.email
    json.profile_photo self.profile_photo
    json
  end
end

我的控制器渲染一个视图,该视图在用户对象上调用 to_builder 方法

user.to_builder.target!

但是我收到的 JSON 输出是一个空哈希 {}

如果我将视图中的代码更改为不使用 to_builder 方法而是直接使用 jbuilder json,我会得到所需的输出

json.user_id user.id
json.firstname user.firstname
json.lastname user.lastname
json.email user.email
json.profile_photo user.profile_photo

我做错了什么。我不想在我的视图中编写代码,但由于某种原因,这些东西无法正常工作

【问题讨论】:

    标签: ruby-on-rails json jbuilder


    【解决方案1】:

    你可以试试一个简单的方法

     class User
       def to_builder
        Jbuilder.new do |user|
         user.id id
         user.first_name first_name
         user.last_name  last_name
         user.email  email
         user.profile_photo profile_photo_path
        end
      end
     end
    

    你可以试试

     def to_builder
      Jbuilder.new do |person|
       user.(self, :name, :first_name, :last_name, :email, :profile_photo)
      end
     end
    

    然后

     user = User.new(1, "First Name", "Last Name", "myemail@gmail.com", "c:\users\my.png")
     user.to_builder.target!
    
     #=> {id: 1, first_name: "First Name", last_name: "Last Name", email: "myemail@gmail.com", profile_photo: "c:\users\my.png"}
    

    【讨论】:

    • 已经试过了。不起作用。是 user.to_builder.target!不允许出现在视图中?
    • @DanMatlin 我看到了同样的情况,视图返回 JSON 对象的字符串表示,而不是对象。你的解决方案是什么?
    猜你喜欢
    • 2015-12-17
    • 2013-03-18
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多