Rails 5如何用新模型加载关系模型结构?

问题描述 投票:0回答:1

我有由Rails和VueJs(不是SPA)提供支持的创建和编辑表单。对于“创建”和“编辑”表单,我都需要一个一致的JSON结构。

class VisitReport < ApplicationRecord

  has_one: visit_report_doctor
  has_many :visit_report_visitors

end

在编辑表单上(visit_reports / 1 / edit)

控制器

def edit
  @visit_report = VisitReport.find(params[:id])
end

HTML

<%= @visit_report.to_json(:include => { :visit_report_doctor => {}, :visit_report_visitors => {} }) %>

我将获得此JSON:

id: 1,
visit_report_visitors: [],
visit_report_doctor: {
    id: 14,
    visit_report_id: 1,
    name: 'Doctor G'
}

在创建表单时,新记录

控制器

def new
  @visit_report = VisitReport.new
end

HTML

<%= @visit_report.to_json(:include => { :visit_report_doctor => {}, :visit_report_visitors => {} }) %>

我得到了这个JSON对象(请注意,我想要的JSON中未包含visit_report_doctor的内容)

但是包含has_many visit_report_visitors的空白关系:

id: null,
visit_report_visitors: [],

问题是,当键为null时,如何强制加载visit_report_doctor关系,以便我的JSON结构对于“新建”和“编辑”表单都是一致的?

谢谢

ruby-on-rails-5
1个回答
0
投票

[我也有使用VueJS的应用程序,ActiveModelSerializer是一个用于保持JSON一致性的好工具(也可以提高Rails的可读性和结构)。这可以帮助您为模型保持一致的JSON结构,并且不会因为应用程序的“视图”部分而阻塞了控制器。

© www.soinside.com 2019 - 2024. All rights reserved.