我正在处理这段代码:
render json: User.find(params[:id]).to_json(
:include =>
{
:user_quests => { :inlcude => { :quest }, :only => { :id } },
:user_skills
},
:except =>
{
:authentication_token,
:email
}
)
结果为SyntaxError
。我目前唯一的工作代码是:
render json: User.find(params[:id]).to_json(
:include =>
[
:user_quests,
:user_skills
],
:except =>
[
:authentication_token,
:email
]
)
但我需要将更多参数传递给只有一个关联来执行嵌套include
。应该以与工作代码中相同的方式获取另一个(:user_skills
)。我该怎么做?
答案 0 :(得分:1)
此代码导致语法错误,因为您没有正确使用集合。数组([]
)是值列表,而散列映射(或简称散列,{}
)需要键值对。
在to_json
的上下文中有一组关联:
[
:user_quests,
:user_skills
]
...大致相当于映射到空选项哈希的关联哈希:
{
:user_quests => {},
:user_skills => {}
}
执行完转换后,您可以根据需要有选择地添加选项。
答案 1 :(得分:0)
这是适合我的解决方案,与Rails 4兼容:
render json: User.find(params[:id]).as_json(
include:
{
user_quests:
{
include:
{
quest:
{
only: :_id
}
}
},
user_skills:
{
}
},
except: [:authentication_token, :email]
)