以下のようなコードを用いて
複数モデル(1対多)の登録を一つのフォームで行おうと思っているのですが
disk情報を入力する欄が画面に出力されません。。。
(入力フォーム自体は出ているのですが、、、)
そもそも画面にフォームが出てこないので
モデルの関連付けの部分以前かと思いますが
どこが間違っているのかご教授いただければ幸いです。
※ちなみに以下のページを参照して試行錯誤しています。
https://techracho.bpsinc.jp/hachi8833/2017_05_01/39502
http://iroiroblog.com/rails-form-multi-model/
#_former
<%= form_with(model: targetserver, local: true) do |form| %> <% if targetserver.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(targetserver.errors.count, "error") %> prohibited this targetserver from being saved:</h2> <ul> <% targetserver.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= form.label :hostname %> <%= form.text_field :hostname, id: :targetserver_hostname %> </div> <div class="field"> <%= form.label :os %> <%= form.text_field :os, id: :targetserver_os %> </div> <div class="field"> <%= form.label :cpu %> <%= form.number_field :cpu, id: :targetserver_cpu %> </div> <%= form.fields(:disk, skip_id: true) do |disk| %> <%= hidden_field_tag :partitionname, id: :disk_partitionname, :value => "/" %> <%= disk.label :disk_size %> <%= disk.text_field :size, id: disk_size %> <% end %> <div class="actions"> <%= form.submit %> </div> <% end %>
#targetserverモデル
class Targetserver < ApplicationRecord has_many :disk accepts_nested_attributes_for :disk end
#diskモデル
class Disk < ApplicationRecord belongs_to :targetserver, optional: true end
#db/schema.rb
ActiveRecord::Schema.define(version: 20180105083156) do create_table "disks", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.integer "serverid" t.string "partitionname" t.integer "size" t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "targetservers", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "hostname" t.string "os" t.integer "cpu" t.datetime "created_at", null: false t.datetime "updated_at", null: false end end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。