Ruby on rails 如何合并许可证中的嵌套属性+;轨道
我想在评论属性中添加用户id和项目idRuby on rails 如何合并许可证中的嵌套属性+;轨道,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我想在评论属性中添加用户id和项目id params.require(:task).permit(:summary, comments_attributes: [:id, :content]) 我试过使用下面的工具,但不起作用 user_id = current_user.id project_id = project.id 请帮我怎么做?您必须使用 首先将允许的参数转换为哈希,然后深度合并哈希: params.require(:task).permit(:summary, comme
params.require(:task).permit(:summary, comments_attributes: [:id, :content])
我试过使用下面的工具,但不起作用
user_id = current_user.id
project_id = project.id
请帮我怎么做?您必须使用
首先将允许的参数转换为哈希,然后深度合并哈希:
params.require(:task).permit(:summary, comments_attributes: [:id, :content]).deep_merge(user_id: current_user.id, comments_attributes: [user_id: current_user.id, project_id: project.id])
虽然这是一个老问题,但正确的答案是-> 在Rails 5中,您应该使用
这在Rails 5中是如何工作的?似乎
deep\u merge
不再是ActionController::Parameters
的子类。对于Rails 5中的deep\u merge
,我得到了一个undefined方法
错误。@Tintin81检查新答案。祝你一切顺利
params.require(:task).permit(:summary, comments_attributes: [:id, :content]).deep_merge(user_id: current_user.id, comments_attributes: [user_id: current_user.id, project_id: project.id])
params.require(:task).permit(
:summary,
comments_attributes: [
:id,
:content
]
).to_h.deep_merge(
user_id: current_user.id,
comments_attributes: [
user_id: current_user.id,
project_id: project.id
]
)
params[:task][:comments_attributes].merge!({user_id: current_user.id, project_id: project.id})
params.require(:task).permit(:summary, comments_attributes: [:id, :content]).reverse_merge(user_id: current_user.id, comments_attributes: [user_id: current_user.id, project_id: project.id])