我使用脚手架生成器来创建围绕“自动”资源的 CRUD。手册资源只包含一个“name”列、一个字符串,当然还有一个“id”列、一个整数。
我还手动创建了面向“手动”资源的 CRUD。手动资源与自动资源具有相同的模式。我为手动创建的控制器操作创建了逻辑路由。
我无法理解的是如何使用与资源列名称相关的键填充新资源实例。
这是在自动资源中创建新行所必需的脚手架生成的操作:
def new
@automatic = Automatic.new
end
在views/automatic/new我创建了一个 erb 标签来观察资源实例:
<%= debug @automatic %>
这是它打印到屏幕上的内容:
--- !ruby/object:Automatic
attributes:
id:
name:
正如我所怀疑的那样。
这是在手动资源中创建新行所需的手动创建操作:
def new
@manual= Manual.new
end
在views/manual/new我创建了一个 erb 标签来观察资源实例:
<%= debug @manual %>
这是它打印到屏幕上的内容:
---
...
完全空了!尝试更新名称列会导致ActiveModel::ForbiddenAttributesError in FeaturesController#create
错误?模型是相同的,答案必须在于密钥没有填充到我的手动资源实例中。
为什么不?我不明白。它们的 MVC 路径是相同的。
这完美地工作:
@automatic = Automatic.new
这根本不起作用:
@manual = Manual.new
为什么?