2014-03-24 44 views
1

我有這兩種方法未定義局部變量或方法`資源」用於Simple_Form

def trial_signup 
    @user = User.new 
    end 

    def trial_signup_submit 
    @user = User.create(params[:user_attributes]) 
    end 

我trial_signup.html.erb(simple_form)一個用戶控制器處於應用/視圖/用戶

這裏是我的表格的一部分

<%= simple_form_for(resource, :as => resource_name, :url => users_trial_signup_submit_path(resource_name)) do |f| %> 
在我的路線

我添加了這些

get 'users/trial_signup', to: 'users#trial_signup' 
    post 'users/trial_signup_submit', to: 'users#trial_signup_submit' 

我的表單得到正確呈現,但它沒有正確發佈。我希望它發佈到我剛剛創建的操作。

我有設計安裝。我有另一個註冊用戶註冊工作流程,但這是一個試用註冊,所以我需要找到另一種方式。

爲什麼表單無法找到我的用戶模型資源?

回答

2
<%= simple_form_for(@user, :url => users_trial_signup_submit_path(@user)) do |f| %> 

你試圖渲染有一項控制器之外有一項形式,所以你沒有初始化resource也不resource_name變量。

也許,你需要改變你的PARAMS在你的控制器也:

def trial_signup_submit 
    @user = User.create(params[:user]) 
end 

雖然我建議做這樣的事情:

def trial_signup_submit 
    @user = User.new(params[:user]) 
    if @user.save 
    redirect_to <wherever you want>, notice: <your message> 
    else 
    render :trial_signup 
    end 
end 

PS:我想你應該改變你的行動,如new_trialcreate_trial,如果您需要與默認值newcreate不同的東西。

相關問題