所以我正在尝试像Twitter那样建立一个注册过程。这意味着,有一个预注册表单,可以从第一个表单中获得具有自动填充字段的完整表单。我试图在最终形式中使用:value => @name
来创建它,但它不起作用,我无法弄清楚原因。
这是我的代码,简化:
第一种形式,控制器:public_controller,action:index(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,action:register(/ 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 %>
Users_controller
def register
@name = params[:name]
@email = params[:email]
@password = params[:password]
end
参数传递到最终表单页面(/ signup)
{“utf8”=&gt;“✓”,“authenticity_token”=&gt;“R3wVNHvqpDBl1Lg69lwKu4NeQGjA12oV / Aytw38OeHc =”,“user”=&gt; {“name”=&gt;“Stackoverflow”,“email”=&gt; “stack@stackstack.com”,“password”=&gt;“stacker”,“password_confirmation”=&gt;“stacker”},“commit”=&gt;“注册!”,“搜索”=&gt;“”, “controller”=&gt;“users”,“action”=&gt;“register”}
但是他们并没有自动填充最终形式的字段。
我也尝试将:input_html => { :value => @name }
与params[:name]
一起使用,但它没有效果,输入的值只是转为value =“nil”。
我想不出别的东西可以试试。有任何想法吗?提前致谢!非常感谢任何帮助!
答案 0 :(得分:0)
def register
@name = params[:user][:name]
@email = params[:user][:email]
@password = params[:user][:password]
end
但是你最终还是想出来了。