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,动作:注册(/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"。

我只是想不出从这里可以尝试的其他任何东西。有任何想法吗?提前致谢!任何帮助是极大的赞赏!

4

1 回答 1

0

对控制器的微小监督?不应该

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

不过你最终还是想通了。

于 2013-08-25T02:04:53.967 回答