我的控制器中有这个方法:
# GET /bios/1
# GET /bios/1.json
def show
if member_session?
@member = MemberPresenter.new(@bio.member)
# I need something here to add a flag to the json response to signal this is a member session.
else
@member = MemberPresenter.new(@bio.member)
end
end
我需要修改json响应以返回类似的内容:
{member:@member,member_session:true}
提前致谢!
答案 0 :(得分:1)
您可以将json
参数用于render
个函数:
render json: { member: @member, member_session: true }
但它不是在rails中呈现JSON的最佳方式。我建议您尝试使用https://github.com/rails-api/active_model_serializers
答案 1 :(得分:1)
我不确定您是否一直想要返回json,但这里也可以替代其他格式:
respond_to do |format|
format.html
format.json { render json: { member: @member, flag: @member.status } }
end
对于小而简单的对象,这样做很好,但如果你必须拖动关联,你可以选择使用序列化程序,或者你可以将to_json
方法覆盖为这样的东西。 / p>
# member.rb
def as_json(options = {})
options = options.merge(
except: [
:updated_at,
:created_at,
],
include: { # Getting associations here
address: {
only: [:street, :zip_code],
include: {
neighbors: { only: :name }
}
}
}
)
super.as_json(options)
end
最后在控制器render json: @member.to_json
内,它将拉出你想要的所有关联。这是懒人的序列化方式,即我所做的:)