2017-10-13 2 views
1

In meinem Projekt habe ich API und das zugehörige Front-End-Teil. Ich benutze Schienen Version 5. Ich erstelle zwei Modelle. Einer ist Benutzer und ein anderer ist Qualifikationen. Verbände sind unten angegeben.undefined Methode "reflect_on_association" bei Verwendung von "nested_form" gem. Rails 5

class User 
    include Her::Model 
    include Her::FileUpload 
    has_file_upload :image_url 

    has_many :videos 
    has_many :qualifications 
    attributes :name, :email, :phone, :image_url, :contact_email, :about, :password, :password_confirmation 

    custom_post :sign_in, :refresh 
    custom_get :me 

    accepts_nested_attributes_for :qualifications 
end 

Und Qualifikationsmodell ist

class Qualification 
    include Her::Model 

    belongs_to :user 
    attributes :school, :degree, :grade, :start_year, :end_year 
end 

Mein starkes params in Benutzer-Controller

def user_params 
     user: params.require(:user).permit(:id, :name, :email, :phone, :contact_email, :about,:image_url, 
     {specialization_ids: []}, 
     qualifications_attributes: [:id, :school, :degree, :grade, :start_year, :end_year, :_destroy] 
    end 

Mein Benutzerformular ist, wo i nested_form ist zur Verfügung gestellt habe

<div class="row"> 
    <div class="container"> 
    <div class="signup-bg col-md-12"> 
     <h3 style="color:white;"> General Info </h3> 
     <hr> 
     <%= simple_nested_form_for @user do |f| %> 
      <%= f.input :email, input_html: {class: "input-user-form"} %> 
      <%= f.input :name, input_html: {class: "input-user-form"} %> 
      <%= f.input :phone , input_html: {class: "input-user-form"}%> 
      <%= f.input :contact_email, input_html: {class: "input-user-form"} %> 
      <%= f.input :about, as: :text, input_html: {class: "input-user-form"}%> 
      <label class="control-label">Selected Specializations</label> 
      <ul class="list-group"> 
      <% @user.specializations.each do |sp| %> 
       <li class="list-group-item tags"> 
       <%= check_box_tag "user[specialization_ids][]", sp["id"], true%> 
       <%= sp["name"] %> 
       </li> 
      <% end %> 
      </ul> 
     <h4 style="color:white;"><center>Select Your Specializations</center></h4> 
     <div class="row"> 
      <div class="col-md-12"> 
      <div class="input-group"> 
       <input id="searchText" type="text" class="input-signup" placeholder="Search Specialization" style="z-index:0;"> 
       <span class="input-group-btn"> 
        <button class="btn btn-default btn-go" type="button">Go!</button> 
       </span> 
       </div> 
      <div class="col-md-12 col-sm-12 col-lg-12" id="specializationHolder" style="min-height:85px;"></div> 
      </div> 
     </div> 
     <h3 style="color:white;"> Qualification Info </h3> 
     <hr> 
     <div id="qualification_holder"> 
      <%= f.simple_fields_for :qualifications, @qualification do |g| %> 
      <%= g.input :school,input_html: {class: "input-user-form"} %> 
      <%= g.input :degree, input_html: {class: "input-user-form"} %> 
      <%= g.input :grade, as: :integer, input_html: {class: "input-user-form"} %> 
      <%= g.input :start_year, required: false, as: :string, input_html: {type: :date, class: "datepicker input-user-form"} %> 
      <%= g.input :end_year, required: false, as: :string, input_html: {type: :date, class: "datepicker input-user-form"} %> 
      <% end %> 
     </div> 
     </br> 
     <div class="col-md-4"> 
      <%= f.link_to_add :qualifications, data: {target: "#qualification_holder"}, class: "btn-signup-submit" do %> 
      <b> + </b> Add Qualifications 
      <% end %> 
     </div> 
     <div id="wrapper"> 
      <label class="control-label file optional" for="user_image_url">Profile Picture</label> 
      <input class="file optional" type="file" name="user[image_url]" id="fileUpload"> 
     </div> 
     <div class="form-group text-center"> 
      <button type="submit" class="btn-signup-submit">Save Changes</button> 
     </div> 
     <% end %> 
    </div> 
    </div> 
</div> 

Aber ich bekomme einen Fehler undefinierter Fehler "reflect_on_association", der auf "link_to_add" zeigt. Ich bin eine Woche hier. Gibt es Lösungen dafür? Wenn ja, bitte hilf mir.

Vielen Dank im Voraus.

+0

'Könnte: quualifications' einen Tippfehler sein? Wahrscheinlich meintest du ': qualifications' –

+0

Ja Sir. Ich habe es geändert. Aber immer noch ist der Fehler gleich. –

+0

Ich verstehe. 'link_to_add' erwartet link text als ersten Parameter. Haben Sie versucht, 'f.link_to_add" eine Qualifikation hinzuzufügen ",: Qualifikationen' –

Antwort

0

Ich hatte den gleichen Fehler. Die Lösung besteht darin, die Option class_name für Ihre problematische Assoziation hinzuzufügen, ohne den Klassennamen zu verschachteln.

In Ihrem Fall können Sie versuchen:

class User 
    include Her::Model 
    include Her::FileUpload 
    has_file_upload :image_url 

    has_many :videos 
    has_many :qualifications, class_name: "::Qualification" 
    attributes :name, :email, :phone, :image_url, :contact_email, :about, :password, :password_confirmation 

    custom_post :sign_in, :refresh 
    custom_get :me 

    accepts_nested_attributes_for :qualifications 
end 
Verwandte Themen