2013-08-24 96 views
0

所以我試圖建立一個註冊過程就像Twitter了。這意味着,有一個預先註冊的表單,可以從第一個表單中導入帶有自動填充字段的完整表單。我試圖在最終形式中使用:value => @name來創建它,但它不起作用,我只是無法弄清楚原因。自動填充註冊表單與從預註冊表單參數不工作

這是我的代碼,簡化了:

第一形式中,控制器:public_controller,動作:指數(root_path)

<%= form_tag({:controller => "users", :action => "register"})%> 
    <input name="user[name]" type="text" /> 
    <input name="user[email]" type="text"/> 
    <input name="user[password]" type="password"/> 
    <input name="commit" type="submit" value="Sign Up!" /> 

第二形式中,控制器:users_controller,動作:註冊(/註冊)

<%= form_for(:user, :url => { :controller => 'users', :action => 'create' }) do |f| %> 
    <%= f.text_field :name, :value => @name %> 
    <%= f.text_field :email, :value => @email %> 
    <%= f.password_field :password, :value => @password %> 
    <input name="commit" type="submit" 
      value="Sign Up!" /> 
    <% end %> 

Users_co ntroller

def register 
    @name  = params[:name] 
    @email = params[:email] 
    @password = params[:password] 
end 

的PARAMS被傳遞到最終形式頁(/註冊)

{ 「UTF8」=> 「✓」, 「authenticity_token」=> 「R3wVNHvqpDBi1Lg69lwKu4NeQGjA12oV/Aytw38OeHc =」, 「user」=> {「name」=>「Stackoverflow」,「email」=>「[email protected]」,「password」=>「stacker」,「password_confirmation」=>「stacker」}, =>「註冊!」,「搜索」=>「」,「控制器」=>「用戶」,「動作」=>「註冊」}

但他們不autopopulating最終形式的領域。

我也試過使用:input_html => { :value => @name }params[:name],但它沒有效果,輸入的值簡單地變成value =「nil」。

我只是想不出別的辦法來嘗試從這裏。有任何想法嗎?提前致謝!任何幫助是極大的讚賞!

+0

它應該工作,你檢查了'註冊'行動中的'params'哈希? – vee

+0

是的,沒關係。我終於實際上通過在最終的表單中對來自'register' action的變量進行處理並且僅僅去掉::value => params [:user] [:name]和params [:user] [:email]'來工作。不知道爲什麼它不能以其他方式工作,但我想這是做同樣的工作。不過,非常感謝您的關注。 – Kasperi

回答

0

控制器上的小小疏漏? 它不應該是

def register 
    @name  = params[:user][:name] 
    @email = params[:user][:email] 
    @password = params[:user][:password] 
end 

你還挺最終想通了,雖然。