【问题标题】:add fields to polymorphic devise user rails 4向多态设计用户rails 4添加字段
【发布时间】:2016-06-02 00:43:50
【问题描述】:

我有一个 Rails 应用程序,为用户使用设计。我有两种类型的用户,它们共享一些字段,然后拥有自己的字段。我为这两种类型制作了多态模型。当我向基本设计用户添加字段时,添加新用户的表单似乎无法识别新字段。

设计用户

class User < ActiveRecord::Base

  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

  belongs_to :meta, polymorphic: true
end

多态艺术家模型

class Artist < ActiveRecord::Base
    has_one :user, as: :meta, dependent: :destroy
    has_and_belongs_to_many :artist_expertises
    accepts_nested_attributes_for :user

    has_many :connections
    has_many :teachers, through: :connections
end

覆盖设计注册

class RegistrationsController < Devise::RegistrationsController
    private

    def sign_up_params
        params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
    end

    def account_update_params
        params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
    end

end

路线

Rails.application.routes.draw do

...
  resources :artists
  resources :teachers
  devise_for :users, :controllers => { registrations: 'registrations' }
...
end

然后,在新页面中为艺术家使用的以下 _form 上,默认情况下适用于设计中的电子邮件和密码字段。我添加到用户表错误的 :first_name 字段的下一个 user_fields.label (undefined local variable or method `user_fields' for # 你的意思是? number_field)

views/artist/_form.html.erb(在新视图中呈现)

<%= form_for(setup_artist(@artist)) do |f| %>
    <% if @artist.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@artist.errors.count, "error") %> prohibited this artist from being saved:</h2>

      <ul>
        <% @artist.errors.full_messages.each do |message| %>
        <li><%= message %></li>
        <% end %>
      </ul>
    </div>
    <% end %>

    <%= f.fields_for :user do |user_fields| %>
    <div class="field">
      <%= user_fields.label :email %>
      <%= user_fields.text_field :email %>
    </div>
    <div class="field">
      <%= user_fields.label :password %>
      <%= user_fields.text_field :password %>
    </div>
    <% end %> 

    <div class="field">
      <%= user_fields.label :first_name %><br />
      <%= user_fields.text_field :first_name %>
    </div>

    <div class="field">
      <%= user_fields.label :last_name %><br />
      <%= user_fields.text_field :last_name %>
    </div>

    <div class="field">
      <%= f.label :inspiration %><br>
      <%= f.text_area :inspiration %>
    </div>

    <div class="field">
      <%= f.label "Area of Expertise" %><br />
      <%= f.collection_check_boxes :artist_expertise_ids, ArtistExpertise.all, :id, :name do |b| %>
      <div class="collection-check-box">
        <%= b.check_box %>
        <%= b.label %>
      </div>
      <% end %>
    </div>


    <div class="actions">
      <%= f.submit %>
    </div>
    <% end %>

【问题讨论】:

    标签: ruby-on-rails-4 devise polymorphism


    【解决方案1】:

    哎呀,我是个叮当。在我添加用户字段之前有 。 感谢您的帮助 ya bing bongs。

    【讨论】:

      猜你喜欢
      • 2013-10-27
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      相关资源
      最近更新 更多