首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails 5.1 form_with三重嵌套子窗体(孙子??)下级未继承属性且未保存的

Rails 5.1中的form_with方法是用于生成表单的辅助方法。它可以用于创建包含多个嵌套子窗体的表单。在三重嵌套子窗体中,下级子窗体未继承属性且未保存的问题可能是由于表单的嵌套关系或数据模型的关联设置不正确导致的。

要解决这个问题,首先需要确保数据模型之间的关联设置正确。在Rails中,可以使用has_many、belongs_to等关联方法来定义模型之间的关系。确保父级模型正确地关联到子级模型,并且子级模型正确地关联到孙子级模型。

其次,需要在控制器中正确地构建表单对象。在三重嵌套子窗体中,需要在控制器中创建父级对象、子级对象和孙子级对象,并将它们正确地关联起来。可以使用build方法来构建关联对象。

最后,在视图中正确地渲染表单。在form_with方法中,需要使用fields_for方法来渲染子级和孙子级表单。确保正确地嵌套子级和孙子级表单,并正确地设置表单字段的名称。

以下是一个示例代码,演示了如何在Rails 5.1中创建三重嵌套子窗体:

代码语言:txt
复制
# 数据模型
class Parent < ApplicationRecord
  has_many :children
  accepts_nested_attributes_for :children
end

class Child < ApplicationRecord
  belongs_to :parent
  has_many :grandchildren
  accepts_nested_attributes_for :grandchildren
end

class Grandchild < ApplicationRecord
  belongs_to :child
end

# 控制器
class ParentsController < ApplicationController
  def new
    @parent = Parent.new
    @parent.children.build
    @parent.children.each do |child|
      child.grandchildren.build
    end
  end

  def create
    @parent = Parent.new(parent_params)
    if @parent.save
      # 保存成功的处理逻辑
    else
      # 保存失败的处理逻辑
    end
  end

  private

  def parent_params
    params.require(:parent).permit(children_attributes: [:id, :name, grandchildren_attributes: [:id, :name]])
  end
end

# 视图
<%= form_with(model: @parent, local: true) do |form| %>
  <%= form.fields_for :children do |child_form| %>
    <%= child_form.text_field :name %>
    <%= child_form.fields_for :grandchildren do |grandchild_form| %>
      <%= grandchild_form.text_field :name %>
    <% end %>
  <% end %>
  <%= form.submit %>
<% end %>

在上述示例中,Parent模型与Child模型之间是一对多的关系,Child模型与Grandchild模型之间也是一对多的关系。在控制器的new方法中,通过build方法构建了父级对象、子级对象和孙子级对象。在视图中使用fields_for方法嵌套渲染了子级和孙子级表单。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,无法给出具体的推荐。但可以参考腾讯云的云计算产品,如云服务器、云数据库、云存储等,以满足不同场景下的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

重点内容回顾-DRF

5.DRF框架 5.1web开发两种模式 前后端不分离:前端看到效果是由后端进行控制,由后端进行模板渲染,给客户端返回渲染之后完整页面内容。...注意:校验通过之后,要调用 serializer.save()进行数据保存。 5.5视图类 5.5.1功能 1.使用序列化器(数据校验,数据保存,数据序列化)。 2.进行数据库相关查询。...ModelViewSet 继承自GenericViewSet和5个对应Mixin扩展类。如果视图集中一次性想要提供5个接口时候,我们可以继承此父类。...5.6.5视图集对象action属性 视图集对象action属性是一个字符串,我们可以根据action获取所要执行是哪一种操作。...权限:区分是认证与认证用户。可以进行DRF框架默认全局权限设置,也可对其进行修改,还可以指定某个视图权限控制设置,甚至可以自定义权限控制类。权限和认证通常是一起使用

2.4K20

HarmonyOS 应用开发 —— 常用装饰器整理

故自行总结常用装饰器学习笔记 PS:由于楼主也在学习过程中,所以可能有些地方写不是很清晰,欢迎大家来指正 一、修饰 struct 或 class @Entry 作用:表示自定义组件入口,一个组件有只能拥有一个入口...// .. } // .. } } @Prop 作用:父组件 -> 子组件,单向同步状态 TODO:实际开发中暂时遇到,如遇到了,在更新 @Link 父子组件双向同步状态 使用...@Consume [待更新] 作用:跨组件通信,可以给孙子组件变量修饰 @ObjectLink [待更新] 与被 @Observed 修饰过 class 结合一起使用,具体作用待了解 TODO:...this.labelIcon($r("app.media.unselect")) } // .. } } } @Style 作用:用来修饰一个函数,保存样式....borderRadius(15) .shadow({ radius: 6, color: 0x1F000000, offsetX: 2, offsetY: 4}) } @Extend 作用:继承一个内置组件

54310
  • C++ Qt开发:数据库与TableView多组件联动

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽方式将不同组件放到指定位置,实现图形化开发极大方便了开发效率,本章将重点介绍TableView...在Qt中,通常我们不会在TableView等组件中保存数据,一般会将这些数据存储至数据库或者是文件中保存,当使用时则动态在数据库中调出来,以下案例将实现,当用户点击并选中TableView组件内某一行时...,我们通过该行中name字段查询,并将查询结果关联到ListView组件内,同时将TableView中选中行字段分别显示在窗体底部LineEdit编辑框内。...QSqlQueryModel 用于与数据库交互模型类之一,它继承自 QAbstractTableModel。...最后,通过调用 submit 将界面上更改提交到模型,而 revert 则撤销提交更改。

    51310

    Serializable详解(1):代码验证Java序列化与反序列化

    (1)中所述父类实现序列化,实现序列化子类会承担保存和恢复父类public、protected、package等子类可访问到子类字段。...此处我个人理解为实现序列化子类进行序列化时候继承实现序列化父类中子类可访问到属性,但序列化时无法记录下父类对象状态信息; 此处文档若要正确读取理解,切记(1)(2)(3)不可拆分,要放在一起去理解...这种情况可能发生在反序列化时,接收方使用了发送方对象不同版本,或者接收方继承版本与发送方继承版本不一致。另外,当序列化流被篡改了,也会发生这种情况。...set属性; readObjectNoData()标签方法内set属性值为该类属性值,也就是说当引用其他对象属性值进行set时,该方法是无效。...st.getHeight()+" "+st.isBeard()+" "+st.getStuCard()+" "+st.getGrades());                  /**结果:          * 父类父类属性实现序列化

    1.2K10

    使用CEF(二)— 基于VS2019编写一个简单CEF样例

    PS:这里本人使用了$(ProjectDir),它是一个VS宏变量,返回项目所在目录(即,vcxproj所在目录),目录末尾带反斜杠\。...相关代码如下: // SimpleBrowserViewDelegate // 继承CefBrowserViewDelegate,即CEF浏览器视图代理。...; 使用CEF提供视图框架:在这种情况下,我们一定用了原生窗体框架或者是第三方(QT或者GTK+),那么就需要调用相关原生窗体API或者第三方API来完成窗体标题修改。...通过GetHost()来获取CEF浏览器对象宿主对象(这里就是Windows原生窗体); 再获取对应窗体句柄; 通过#include 得到WindowsAPI完成标题修改。...保存后,我们再次构建项目并运行我们simple-cef.exe,终于看到了期待已久页面: 写在结尾 在不断踩坑下,我们终于得到了一个网络页面,不过这并不意味着我们使用CEF之旅就结束了,恰恰相反

    1.1K10

    前端开发面试题答案(五)

    ),DOM 中按键代码和字符是分离,要获取字符代码,需要使用 charCode 属性; 阻止某个事件默认行为,IE中阻止某个事件默认行为,必须将 returnValue 属性设置为 false...*(缺点)Node是一个相对新开源项目,所以不太稳定,它总是一直在变, 而且缺少足够多第三方库支持。看起来,就像是Ruby/Rails当年样子。 8、你有用过哪些前端性能优化方法?...(2) 前端模板 JS+数据,减少由于HTML标签导致带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数 (3) 用innerHTML代替DOM操作,减少DOM操作次数...303 See Other 临时性重定向,总是使用GET 请求新 URI。 304 Not Modified 自从上次请求后,请求网页未修改过。...先期团队必须确定好全局样式(globe.css),编码模式(utf-8) 等; 编写习惯必须一致(例如都是采用继承写法,单样式都写成一行); 标注样式编写人,各模块都及时标注(标注关键样式调用地方

    1.7K20

    c#实战教程_ps初学者入门视频

    ,这个小原点表示Console是作为System成员而存在。C#中抛弃了C和C++中繁杂极易出错操作符象::和->等,C#中复合名字一律通过.来连接。...虽然结构不能从类和结构派生,可是结构能够继承接口,结构继承接口方法和类继承接口方法基本一致。... 派生类不能继承基类构造函数、析构函数和事件。但能继承基类属性。...1.14.2 接口继承 类似于类继承性,接口也有继承性。派生接口继承了基接口中函数成员说明。接口允许多继承,一个派生接口可以没有基接口,也可以有多个基接口。...超级链接控件属性、方法和事件  属性LinkColor:用户访问过链接字符颜色,默认为蓝色。  属性VisitedLinkColor:用户访问链接后字符颜色。

    15.6K10

    Python入门学习(二)

    5 异常处理 《Python标准异常总结》 5.1 try except语句 用来检测一段代码内出现异常并将其归类输出相关信息 try:   检测范围 except Exception[as reason...因此当两者同时运行时候,有可能会发生冲突,带来不可预测结果,因此如果发现easygui有这样问题,则应尝试在IDLE外去运行程序。...,可采用两种方式,一种是调用绑定父类方法,二是使用super函数,如代码中所示。...Python支持多继承,方法为class 子类名(父类1,父类2,父类3...),但是应确定是否为必须使用多继承场合,否则有可能导致代码混乱。...8.5 Python组合机制 Python中类之间关系可以是纵向关系,采用继承机制可以将基类里面的属性和方法全部被子类使用,而父类却不可以使用子类方法和属性

    1.5K81

    数据仓库ETL管理平台TASKCTL调度计划控制原理

    period-计划表达式 period 计划表达式主要是在 unix 系统 Crontab 设计思想基础上进行改造,但从5.1 版本开始,TASKCTL为了简化用户对 period 使用难度,精简了时间窗口特征...远程调度与负载均衡 运程调度指当作业程序部署在相应调度服务上时,调度服务器需要通过执行代理控制相应程序。...就拿以上调度示例为例,只需在 agent3 下级联从代理并与上级代理做相同作业程序部署即可完成负载均衡调度。...必须小于当前 CTL 控制节点虚拟资源总值。通常情况下,我们并不需要调整该属性。 只有在大规模并行应用条件下,可通过监控作业一段时期耗时情况,才根据实际情况对其进行优化调整。...属性也支持继承和缺省,若不设置该属性或该属性值为空,则不会定时执行(可以手动执行)。

    1K20

    面试角度诠释Java工程师(一)

    继承是面向对象程序设计能够提高软件开发效率重要原因之一。 ②继承是具有传递性,就像现实中孙子不仅长得像爸爸而且还像他爷爷。 ③继承属性和方法是隐式,也就是在本类里面是看不见。...⑥在HashMap中有只能有一个Key值为null映射。(注:key值是不能重复) List接口:List接口有一个重要实现类ArrayList(数组序列)。...request.setAttribute("","");//前者为需要设置属性,后者为需要值。...注: ①在用户前后连接或不同用户之间连接中,可以对application对象同一属性进行操作。 ②在任何地方对application对象属性操作,都将影响到其他用户对此访问。...所以就需要使用到session钝化机制,它本质就是将服务器使用到session对象暂时序列化到系统文件当中,当要使用时候再反序列化到服务器内存当中。 Model1和Model2 ?

    52910

    flask flask-login使用笔记(flask 55)

    属性,判断是否是匿名用户 1.4 get_id() 方法,返回用户唯一标识 这些属性和方法也可以直接继承于userMixin默认方法和属性,不用自己去实现; [ ?...: 5,自定义登陆操作 5.1 未登陆用户访问了@login_required视图操作,可以设置一些默认操作,否则可能直接报401错误   1) 设置登陆视图,用于授权操作跳转: <pre...Cookie将被保存在用户计算机上,然后如果不在会话中,Flask-Login将自动从该Cookie恢复用户ID。...如果存在标识,则匹配生成,之后请求可用。 在 basic 模式下或会话是永久,如果该标识匹配,会话会简单地被标记为非活 跃任何需要活跃登入东西会强制用户重新验证。...在 strong 模式下非永久会话,如果该标识匹配,整个会话(记住令牌如果存在,则同样)被删除。

    1.3K30

    【炫丽】从0开始做一个WPF+Blazor对话小程序

    3.1 WPF自定义窗体一般实现是设置窗体三个属性WindowStyle="None" AllowsTransparency="True" Background="Transparent",即可隐藏默认窗体边框...,运行程序如下:看上图,点击窗体按钮(其实是Razor组件按钮),但未执行按钮点击事件,窗体消失了,这是怎么回事?...,至少有这两个问题:当您尝试最大化后,窗体铺满了整个操作系统桌面(连任务栏区域也占用了);窗体任务栏两个圆角生效(红色矩形框选部分),即窗体下面的两个圆角,站长未找到让BlazorWebView出现圆角属性或其他方法...5.1 Messager封装本来不想贴代码直接给源码链接,想想代码也不多,直接上吧。...Message消息抽象类,用于定义消息类型,具体消息需要继承该类,比如后面的打开子窗体消息OpenSecondViewMessage。

    8.1K60

    RESTful 架构详解

    我认为,这是因为rails默认使用服务端生成ID作为URI缘故,而不少人就是通过rails实践REST,所以很容易造成这种误解。 客户端不一定都支持这些HTTP方法吧?...资源表述包括数据和描述数据元数据,例如,HTTP头"Content-Type" 就是这样一个元数据属性。 那么客户端如何知道服务端提供哪种表述形式呢?...其实,这里说无状态通信原则,并不是说客户端应用不能有状态,而是指服务端不应该保存客户端状态。...2. 5.1 应用状态与资源状态 实际上,状态应该区分应用状态和资源状态,客户端负责维护应用状态,而服务端维护资源状态。...当然,如果Cookie保存是一些服务器不依赖于会话状态即可验证信息(比如认证令牌),这样Cookie也是符合REST原则

    97920

    【炫丽】从0开始做一个WPF+Blazor对话小程序

    3.1 WPF自定义窗体 一般实现是设置窗体三个属性WindowStyle="None" AllowsTransparency="True" Background="Transparent",即可隐藏默认窗体边框...,运行程序如下: 隐藏WPF默认窗体边框 看上图,点击窗体按钮(其实是Razor组件按钮),但未执行按钮点击事件,窗体消失了,这是怎么回事?...,至少有这两个问题: 当您尝试最大化后,窗体铺满了整个操作系统桌面(连任务栏区域也占用了); 窗体任务栏两个圆角生效(红色矩形框选部分),即窗体下面的两个圆角,站长未找到让BlazorWebView...5.1 Messager封装 本来不想贴代码直接给源码链接,想想代码也不多,直接上吧。...Message 消息抽象类,用于定义消息类型,具体消息需要继承该类,比如后面的打开子窗体消息OpenSecondViewMessage。

    10.3K20

    RESTful架构详解 转

    我认为,这是因为rails默认使用服务端生成ID作为URI缘故,而不少人就是通过rails实践REST,所以很容易造成这种误解。 客户端不一定都支持这些HTTP方法吧?...资源表述包括数据和描述数据元数据,例如,HTTP头“Content-Type” 就是这样一个元数据属性。 那么客户端如何知道服务端提供哪种表述形式呢?...其实,这里说无状态通信原则,并不是说客户端应用不能有状态,而是指服务端不应该保存客户端状态。...2. 5.1 应用状态与资源状态 实 际上,状态应该区分应用状态和资源状态,客户端负责维护应用状态,而服务端维护资源状态。...当然,如果Cookie保存是一些服务器不依赖于会话状态即可验证信息(比如认证令牌),这样Cookie也是符合REST原则

    83731

    宜信105条数据库军规

    规则描述:同上面分区表数量过多理由类似(含有复合分区表数量)。 【规则7】 规则说明:存在启用并行属性表。 规则阈值:1(表degree属性不为1)。...【规则18】 规则说明:存在启用并行属性索引。 规则阈值:1(索引degree属性不为1)。 规则描述:一般情况下不建议对索引设置并行属性。 【规则19】 规则说明:存在聚簇因子过大索引。...二、Oracle规则(执行计划) 2.1 绑定变量 【规则31】 规则说明:使用绑定变量。 规则阈值:自定义(执行次数)。 规则描述:执行次数超过一定阀值语句,谓词右侧存在常量值。...规则描述:存储过程、函数、触发器等都将消耗数据库计算能力,建议通过应用层保证数据约束。 五、MySQL规则(执行计划) 5.1 访问路径 【规则72】 规则说明:大表全表扫描。...规则描述:禁止出现select子句套子查询,避免出现性能问题。 【规则92】 规则说明:出现union。 规则描述:防止出现不必要排序动作。 【规则93】 规则说明:多个过滤条件通过or连接。

    2.5K522

    Google Python 编程风格指南

    不过伪告警应该很少.优点:可以捕获容易忽视错误, 例如输入错误, 使用赋值变量等.缺点:pylint不完美....生成值后, 生成器函数运行状态将被挂起, 直到下一次生成.优点:简化代码, 因为每次调用时, 局部变量和控制流状态都会被保存....必须继承自object类. 可能隐藏比如操作符重载之类副作用. 继承时可能会让人困惑.结论:你通常习惯于使用访问或设置方法来访问或设置数据, 它们简单而轻量. 不过我们建议你在新代码中使用属性....只读属性应该用 @property 装饰器 来创建.如果子类没有覆盖属性, 那么属性继承可能看上去不明显....为多行字符串使用三重双引号”“”而非三重单引号’‘’. 当仅当项目中使用单引号’来引用字符串时, 才可能会使用三重’‘’为非文档字符串多行字符串来标识引用. 文档字符串必须使用三重双引号”“”.

    71830

    【Linux修炼】14.磁盘结构文件系统软硬链接动静态库

    要理解操作系统如何对磁盘上打开文件进行管理,首先我们需要对磁盘这个设备物理结构、存储结构与逻辑结构进行理解,然后再在此基础上理解操作系统对磁盘管理方法。...目录和普通文件不同,目录内容是下级目录或者普通文件,所以目录 data block 里面存储是当前目录下文件名与 inode 映射关系。...注:inode 编号可以跨分组,但不可以跨分区,即同一分区内 inode 是统一编号。 读取文件内容 对文件保存就是对内容+属性保存,内容保存在数据块里,属性保存在Inode里。...通过查看,我们发现隐含.实际上就是empty硬链接,.文件是自动生成,所以目录初始硬链接为2原因就是因为.硬链接。...、全局数据区,已初始化,初始化,只读……(堆区栈区没有) 5.1 加载静态库 对于静态库来讲,静态库不需要加载,而程序需要加载。

    1.1K00

    前端开发中不可忽视知识点汇总(二)

    33. new一个对象过程 1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数原型。...,覆盖原型会使继承出现问题 39....*(缺点)Node是一个相对新开源项目,所以不太稳定,它总是一直在变, 而且缺少足够多第三方库支持。看起来,就像是Ruby/Rails当年样子。 57. 你有用过哪些前端性能优化方法?...408——客户端没有在用户指定饿时间内完成请求 409——对当前资源状态,请求不能完成 410——服务器上不再有此资源无进一步参考地址 411——服务器拒绝用户定义Content-Length...([A-Za-z]{2,8})$/; 61. ajax实现原理及方法使用 readyState属性有五个状态值。 0:是uninitialized,初始化。

    1.7K40
    领券