2016-06-02 3 views
0

Ich habe eine Rails-App, mit Devise für Benutzer. Ich habe 2 Arten von Benutzern, die einige Felder teilen und dann ihre eigenen haben. Ich machte polymorphe Modelle für die 2 Arten. Wenn ich dem Benutzer des Basisgeräts Felder hinzufügte, scheint das Formular zum Hinzufügen eines neuen Benutzers die neuen Felder nicht zu erkennen.Felder zu polymorphe Devise Benutzerschienen hinzufügen 4

devise Benutzer

class User < ActiveRecord::Base 

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

    belongs_to :meta, polymorphic: true 
end 

polymorphen Künstler Modell

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 

Überschreiben ersinnen Registrierungen

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 

Routen

Rails.application.routes.draw do 

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

Dann am folgenden _form, die für einen Künstler in der neuen Seite verwendet wird, ist in Ordnung für die E-Mail und Passwort Felder aus devise standardmäßig. der nächste user_fields.label für: first_name Feld, das ich (für # < # undefined lokale Variable oder Methode `user_fields'?: 0x007f9c81b3a108> Meinen Sie number_field) an den Benutzer-Tabelle Fehler mit zusätzlichen

views/Künstler /_form.html.erb (in der neuen Ansicht gerendert)

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

Antwort

0

welp, ich bin ein ding dong. hatte die <% end%> bevor ich die Benutzerfelder hinzugefügt. Danke für die Hilfe ya Bing Bongs.

Verwandte Themen