3

ここ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 %>

対処方法について何かアドバイスをいただけないでしょうか。

4

1 に答える 1