2

私は2つのモデルにDeviseを使用しており、実行後rails g devise:views、いくつかのビューがviews/devise/に作成されます - それらのいくつかは問題なく、これら2つのモデル間で共有できますが、いくつかのフィールドを追加する必要があります(モデルによって異なります)登録の方へ。

たとえば、devise/registrations/new.html.erb私はこれを持っています:

サインアップ

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>
    <p><%= f.label :first_name %><br />
  <%= f.text_field :first_name %></p>

  <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 :partial => "devise/shared/links" %>

これは問題ありませんが、モデル固有にするにはどうすればよいですか? devise に /views/my_model/new.html.erb を見るように指示するにはどうすればよいですか? 各モデルには異なるフィールドがあるため、基本的に、Devise を使用しているモデルごとに 2 つの個別の登録/新しいテンプレートが必要です。

を実行すると、代わりにrails g devise:views mymodelのテンプレートがレンダリングされます。views/deviseviews/mymodel/devise

4

1 に答える 1

1

必要と思われるフィールドを含む各モデルのフォームを含むパーシャルを作成します。使用している特定のモデル (ユーザーまたは管理者) にちなんで名前を付けます。次に、devise/registrations/new.html.erb で、resource.class.name に応じて適切なパーシャルをレンダリングします。

于 2012-06-04T06:11:35.713 に答える