0

我有一个主页,它是我的根 url。我希望用户在这里开始注册过程,他们只输入他们的电子邮件,单击注册,然后在单独的页面上继续注册。

这是我想要在 home-root-landing-page 上的表单的一部分

<div>
<%= f.label :email %><br />
<%= f.email_field :email %>
</div>

这就是完整的(单独的)注册页面的样子。我希望用户在 home-root-landing-page 上输入的电子邮件地址自动填充在此页面上(在他们点击注册并被重定向到此页面之后。)

<h2>Sign up</h2>

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>

  <div><%= f.label :first_name %><br />
  <%= f.text_field :first_name %></div>

  <div><%= f.label :last_name %><br />
  <%= f.text_field :last_name %></div>

  <div><%= f.label :profile_name %><br />
  <%= f.text_field :profile_name %></div>

  <div><%= f.label :email %><br />
  <%= f.email_field :email %></div>

  <div><%= f.label :password %><br />
  <%= f.password_field :password %></div>

  <div><%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %></div>

  <div><%= f.submit "Sign up" %></div>
<% end %>

<%= render "devise/shared/links" %>

我正在使用设计,我在如何简单地处理这个问题上遇到了麻烦。谢谢参观。

4

1 回答 1

2

在您在主页中呈现的视图中,将form操作设置为注册页面/user/signup

在注册控制器中,@user使用您从主页收到的参数初始化 。

#UsersController
def signup
  @user = User.new(params[:user]
end

上述动作将呈现signup视图。现在在form_for. 喜欢:

form_for(@user)

这将自动填充名字和电子邮件。

但是,很明显您正在使用 Devise。我不确定它是否适用于其默认控制器,因为它正在从空哈希中初始化资源(我在源代码中看到以下代码)

  def new
    resource = build_resource({})
    respond_with resource
  end

因此,您可能必须覆盖注册控制器

于 2012-12-03T03:12:46.693 回答