だから私は、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!" />
2 番目のフォーム、コントローラー: users_controller、アクション: 登録 (/signup)
<%= 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 %>
ユーザー_コントローラー
def register
@name = params[:name]
@email = params[:email]
@password = params[:password]
end
パラメータは最終フォーム ページ (/signup) に渡されます。
{"utf8"=>"✓", "authenticity_token"=>"R3wVNHvqpDBi1Lg69lwKu4NeQGjA12oV/Aytw38OeHc=", "user"=>{"name"=>"Stackoverflow", "email"=>"stack@stackstack.com", "password"=>"stacker", "password_confirmation"=>"stacker"}, "commit"=>"Sign Up!", "search"=>"", "controller"=>"users", "action" =>「登録」}
ただし、最終フォームのフィールドは自動入力されません。
:input_html => { :value => @name }
withも使用してみましparams[:name]
たが、効果はなく、入力の値は単純に value="nil" になります。
ここから他に試してみることは何も思いつきません。何か案は?前もって感謝します!どんな助けでも大歓迎です!