※RAILS_GEM_VERSION = '2.3.8'
昨日これが解らず、半日潰してしまった。。。
一応、忘れないようにメモしておく。
やりたいことは、1対nのリレーション、ここではacceptテーブルにacceptdetailが紐づいていますが、これを更新画面でformを使ってシンプルに書きたかった。
viewはこんな感じ
<h1>Editing accept</h1>
<% form_for @accept, :url => { :action => :update } do |form| %>
<%= error_messages_for :accept %>
<p>
aaa:<%= form.text_field :name %>
</p>
<p>
<fieldset>
<legend>詳細</legend>
<% form.fields_for :acceptdetails do |detail| %>
test:
<%= detail.text_field :name %>
<% end %>
</fieldset>
</p>
<p>
<%= submit_tag %>
</p>
<% end %>
<%= link_to 'Show', @accept %> |
<%= link_to 'Back', accepts_path %>
controllerはこれ
class AcceptsController < ApplicationController
# GET /accepts/1/edit
def edit
@accept = Accept.find(params[:id])
end
そして、肝のmodels
class Accept < ActiveRecord::Base
belongs_to :patient
has_many :acceptdetails
accepts_nested_attributes_for :acceptdetails
end
参考にしていた本に、accepts_nested_attributes_for命令が載っていなかったのでハマりました。。。
このようにaccepts_nested_attributes_for命令で子のネストがありますよって宣言しておけば、viewのところでfields_for命令を使って簡潔に子のネストを記述できます。
version=2.3以降からこうなったのかな?
例えば今、version=2.3でアプリを作って、5年後にメンテナンスが発生した場合、version=2.3の情報ってその時ちゃんと取れるんだろうか?
出来なかったら、最新versionにするためのメンテナンスが発生するのか?><;