0
メンバーシップを通じて複数のグループを持つことができるユーザーモデルがあります。ユーザーがグループのメンバーであり、変更なしでフォームを送信すると、メンバーシップテーブルを更新し、group_idを以下のように0に設定しようとします。フォーム必須ではない場合、ネストされた属性を更新します。
<%= form_for([:admin,@user]) do |f| %>
---
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %><br />
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %>
</div>
<%= f.fields_for :memberships do |builder| %>
<div class="field">
<% if builder.object.new_record? %>
<%= builder.label :group_id %><br />
<%= collection_select(:memberships, :group_id, @groups, 'id', 'name', {:include_blank => true}) %>
<% else %>
<%= builder.label :group_id %><br />
<%= builder.text_field :group_id, :value => Group.find(Membership.find(builder.object).group_id).name, :readonly => true %> <%= link_to 'Remove', [:admin,@user,Membership.find(builder.object)], :confirm => 'Are you sure?', :method => :delete %>
<% end %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
は、フォームがデータを提出している私のユーザーフォームで
def edit
@user = User.find(params[:id])
@groups = Group.current
@membership = @user.memberships.build
end
def update
@user = User.find(params[:id])
@groups = Group.current
if params[:memberships][:group_id] != ""
@membership = @user.memberships.build(:group_id => params[:memberships][:group_id])
end
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to admin_users_url, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
#if params[:memberships][:group_id] == ""
# @membership = @user.memberships.build
#end
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
...会員accepts_nested_attributes_forユーザーのための私のモデルの私のユーザコントローラで
...
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"6Vp9sgMySzRm2CU9Dko+Jpf6yaBkXjKkt10UDbb8dcw=",
"user"=>{"email"=>"[email protected]",
"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]",
"memberships_attributes"=>{"0"=>{"group_id"=>"Cricket Maidstone June 2012",
"id"=>"18"}}},
"memberships"=>{"group_id"=>""},
"commit"=>"Update User", "id"=>"25"}
私がしたいのは、フォームをチェックし、collection_selectフィールドにメンバーシップテーブルを更新しないようにしても、電子メール/パスワードの変更を更新するものがないかどうかです。誰もこれを行う方法を見ることができますか?お使いのモデルで
これを調べてみると、これはうまくいくようですが、私が間違っていたのは、フォームに既存のメンバーが含まれていたため、選択ボックスを空白のままにしておくと、フォーム内のフィールド。とにかくあなたの返事に感謝します。<%= builder.label:group_id%>
<%= builder.text_field:group_id、... – Norto23
歓迎です、あなたがそれを修正してうれしいです – fjyaniez