足場ジェネレーターを使用して、「自動」リソースを中心とした 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
なんで?