ここSOでいくつかの同様の質問を見てきましたが、それらは私の問題を完全にはカバーしていません。
ネストされたフィールドを持つ非常に基本的なフォームがありますが、ネストされたフォームに検証エラーがあると、すべてのfields_for
フィールドが元の値にリセットされます。
問題を示すために非常にシンプルなアプリの例を用意しました。コードはこちらから入手できます: https://github.com/mbajur/wicked-form-reset-example
プレビューとして、コントローラーとビューのコードを次に示します。
users_controller.rb
class UsersController < ActionController::Base
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params["user"])
format.html { redirect_to edit_user_path(@user), notice: 'User saved.' }
else
format.html { render action: :edit }
end
end
end
end
users/edit.html.erb
<%= form_for @user do |f| %>
<% # ..... %>
<h3>Assets</h3>
<%= f.fields_for :assets, f.object.assets.first_type do |ff| %>
<%= ff.hidden_field :asset_type %>
<%= ff.label :value, 'Asset value:' %>
<br>
<%= ff.text_field :value %>
<% end %>
<% # ..... %>
<hr>
<%= f.submit %>
<% end %>
対処方法について何かアドバイスをいただけないでしょうか。