2016-02-14 168 views
0

在我的軌道4,5的應用程序,我有一個user模型has_oneprofile模型也belongs_touser模型軌道4 build_association

這是在使用嵌套的資源這樣的IM我第一次有點失去了它 這裏怎麼了去 ,用戶創建一個帳戶,成功的電子郵件身份驗證後,用戶繼續創建一個配置文件。問題是,使用build_association時出現錯誤。林不知道問題是否是實際或即時得到存在params空值(我想不會)

在我的routes.rb

resources :users do 
    resources :profiles 
end 

配置文件查看,new.html.erb

<%= form_for(@profile,url:{ :controller => 'profiles', :action => 'create'},html: {class: "ui large segment form error"}) do |f| %> 
    <%= render 'shared/form_error_messages', object: f.object%> 
     <div class="ui horizontal divider">Create a Profile</div> 
      <%= f.text_field :first_name, :placeholder => "First Name" , :required => true%> 
<%= f.submit "Submit Profile", class: "ui submit button"%> 
    <% end %> 

profiles_controller.rb

def new 
    @user = User.find(params[:user_id]) 
    @profile = @user.build_profile 
end 

def create 
    @profile = @user.build_profile(profile_params) 
    if @profile.save 
     flash[:success] = "Profile has been created" 
     redirect_to root_url 
    else 
     render 'new' 
    end 
end 

private 
def profile_params 
    params.require(:profile).permit(:first_name) 
end 

時,即時通訊提交表單,即時得到

NoMethodError in ProfilesController#create 
undefined method `build_profile' for nil:NilClass 

Application Trace | Framework Trace | Full Trace 
app/controllers/profiles_controller.rb:9:in `create' 
Request 
Parameters: 
{"utf8"=>"✓", 
"authenticity_token"=>"MFCANYra..", 
"profile"=>{"first_name"=>"sample", 
"commit"=>"Submit Profile", 
"user_id"=>"1"} 

回答

0

嘗試改變如下profiles_controller.rb創建操作: -

def create 
    @user = User.find(params[:profile][:user_id]) 
    @profile = @user.build_profile(profile_params) 
    if @profile.save 
     flash[:success] = "Profile has been created" 
     redirect_to root_url 
    else 
     render 'new' 
    end 
end 

讓我知道這個工作與否,試圖找到,如果別的原因造成的問題,謝謝。

+0

我已經這樣做了,是它的工作原理,雖然它不保存USER_ID,我可以把它的形式做手工,但它會是非常好的,如果有人會自動使用build_association所以它修復了錯誤的部分放入user_id – Remson

+0

謝謝!它沒有在第一因爲輕微的未命中的工作,我deletde的:上PARAMS [資料]因爲[:USER_ID]不是一個輪廓陣列然後它的工作。再次感謝,虐待編輯本和紀念這個作爲檢查 – Remson

+0

很大,我它的工作:-) – sghosh968