【问题标题】:Devise for two models: how to customize views?为两种模型设计:如何自定义视图?
【发布时间】:2012-06-03 22:49:56
【问题描述】:

我正在为两个模型使用 Devise,在运行 rails g devise:views 之后,在 views/devise/ 中创建了一些视图——其中一些很好,可以在这两个模型之间共享,但是我必须添加一些字段(取决于型号)到注册一个。

例如,对于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" %>

这没关系,但我如何使其特定于模型?我怎么能告诉设计去看看/views/my_model/new.html.erb?基本上我想为每个使用 Devise 的模型创建两个单独的注册/新模板,因为每个模型都有不同的字段。

当我执行rails g devise:views mymodel 时,它仍然呈现views/devise 的模板而不是views/mymodel/devise

【问题讨论】:

    标签: ruby-on-rails-3 devise


    【解决方案1】:

    我会为您的每个模型创建一个包含您认为必要的任何字段的表单的部分。以您使用的特定模型(用户或管理员)命名它们。然后在 devise/registrations/new.html.erb 中根据 resource.class.name 渲染适当的部分。

    【讨论】:

      猜你喜欢
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多