2014-10-02 70 views
0

在Rails应用程序中,我想更新用户编辑页面的嵌套属性。在控制台中,我可以这样做:使用Formtastic Rails嵌套窗体 - 无法获取关联更新

foo = User.first.memberships.first 
foo.organization_id = 10 
foo.save 

这将更新组织ID。我想用formtastic的形式做到这一点。首先,我的用户模型包括:

accepts_nested_attributes_for :memberships 

的形式如下:

<%= semantic_form_for [:admin, @resource], role: "form" do |f| %> 

<div class="form-group"> 
    <%= f.input :email, label: "Email" %> 
    <%= f.input :avatar, as: :file, name: "Avatar" %> 
    <%= f.input :first_name, label: "First Name" %> 
    <%= f.input :last_name, label: "Last Name" %> 
    <%= f.input :admin, as: :boolean, label: "Admin" %> 
    <%= f.input :password, as: :password, label: "Password" %> 
    <%= f.input :password_confirmation, as: :password, label: "Password Confirmation" %> 
</div> 

<div class="form-group"> 
    <%= f.inputs :for => :memberships do |input| %> 
    <%= f.input :organizations, :as => :radio, :collection => memberships_for_user %> 
    <% end %> 
</div> 

<div class="small-spacer"></div> 
<%= f.submit "Save User", class: "btn primary" %> 
<% end %> 

为集合的helper方法是这样的:

def memberships_for_user 
    Organization.all 
       .sort_by { |o| o.name } 
       .map  { |o| [o.name, o.id] } 
end 

的嵌套属性随之而来的HTML看起来像这样:

<li class="choice"> 
    <label for="user_organization_ids_10"> 
    <input id="user_organization_ids_10" name="user[organization_ids]" type="radio" value="10" />Beer-Davis 
    </label> 
</li> 

如何解决此问题,以便此表单更新Membersa连接模型上的organizaiton_id?

回答

0

尝试

<%= f.inputs :for => :memberships do |mf| %> 
    <%= mf.input :organizations, :as => :radio, :collection => memberships_for_user %> 
<% end %>