假设我有一个用户类
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
我做错了什么。我不想在我的视图中编写代码,但由于某些原因,这些东西不起作用
答案 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"}