to_builder方法从Jbuilder视图返回空哈希

时间:2015-01-07 15:12:59

标签: ruby-on-rails json jbuilder

假设我有一个用户类

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

我做错了什么。我不想在我的视图中编写代码,但由于某些原因,这些东西不起作用

1 个答案:

答案 0 :(得分:0)

你可以尝试一种简单的方法

 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"}