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" %>

私はdeviseを使用していますが、これに簡単にアプローチする方法に問題があります。ご覧いただきありがとうございます。

4

1 に答える 1

2

ホームページでレンダリングしているビューで、formアクションを登録ページに設定します/user/signup

サインアップ コントローラーで@user、ホームページから受け取ったパラメーターで を初期化します。

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

上記のアクションはsignupビューをレンダリングします。で @user を使用しますform_for。お気に入り:

form_for(@user)

これにより、名と電子メールが自動的に入力されます。

ただし、Devise を使用していることは明らかです。空のハッシュからリソースを初期化しているため、デフォルトのコントローラーで機能するかどうかはわかりません(ソースに次のコードが表示されます)

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

そのため、登録コントローラーをオーバーライドする必要がある場合があります。

于 2012-12-03T03:12:46.693 に答える