2014-01-09 72 views
0

我有以下代碼試圖創建一個新的用戶與關聯的新店資源。但是,在正確保存用戶數據的同時,不會創建商店的記錄。哪裏不對?Rails 4.0嵌套表單/數據未保存

用戶控制器:

class UsersController < ApplicationController 
    def new 
    @user = User.new 
    @user.shops.build 
    end 

    def create 
    @user = User.new(user_params) 
     if @user.save 
     flash[:success] = "Signed up successfully." 
     redirect_to root_path 
    else 
     flash[:danger] = "Signup failed!" 
     render 'new' 
    end 
    end 

    private 

    def user_params 
     params.require(:user).permit(:email, :password, :password_confirmation, 
            shop_attributes: [:name]) 
    end 
end 

用戶模型:

class User < ActiveRecord::Base 
    has_many :shops 
    accepts_nested_attributes_for :shops 
end 

商店模型:

class Shop < ActiveRecord::Base 
    belongs_to :user 
end 

形式:

<%= form_for(@user) do |f| %> 
    <%= f.label :email %> 
    <%= f.text_field :email %> 
    <%= f.label :password %> 
    <%= f.password_field :password %> 
    <%= f.label :password_confirmation, "Confirmation" %> 
    <%= f.password_field :password_confirmation %> 

    <%= f.fields_for :shop do |shop| %> 
     <%= shop.label :name %> 
     <%= shop.text_field :name %> 
    <% end %> 

    <%= f.submit "Create my account" %> 
    <% end %> 

回答

0

檢查單/複數措辭(shop_attributes,f.fields_for:店):

def user_params 
    params.require(:user).permit(:email, :password, :password_confirmation, 
           shops_attributes: [:name]) 
end 

和:

<%= f.fields_for :shops do |shop| %> 
+0

謝謝您的回答!用'構建'我得到和「未定義的方法'構建'爲#」錯誤:-( – user3178099

+0

好吧,我編輯了我的答案。你能檢查,複數變化是否足夠了嗎? has_many'或'has_one'店? – AWM

+0

沒有什麼區別,用戶數據被保存,但沒有創建商店記錄 - 我使用'has_many'商店 – user3178099