2017-10-13 14 views
1

Dans mon projet j'ai l'API et sa partie frontale associée. J'utilise des rails version 5. Je crée deux modèles. L'un est l'utilisateur et l'autre est les qualifications. Les associations sont données ci-dessous.méthode non définie "reflect_on_association" sur l'utilisation de la gemme "nested_form". 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 

Et, le modèle de qualification est

class Qualification 
    include Her::Model 

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

Mes forts params dans le contrôleur des utilisateurs est

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 

Mon formulaire utilisateur, où j'ai fourni nested_form est

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

Mais, je reçois une erreur Erreur non définie "reflect_on_association", pointant vers "link_to_add". Je suis coincé ici pendant une semaine. Y at-il des solutions pour cela .. Si oui, s'il vous plaît aidez-moi.

Merci d'avance.

+0

Peut ': quualifications' une faute de frappe? Vous avez probablement voulu dire ': qualifications' –

+0

Oui Monsieur. Je l'ai changé. Mais, l'erreur est toujours la même. –

+0

Je vois. 'link_to_add' attend le texte du lien comme premier paramètre. Avez-vous essayé de faire 'f.link_to_add" Ajouter une qualification ",: qualifications' –

Répondre

0

J'ai eu la même erreur. La solution consiste à ajouter l'option class_name à votre association problématique, sans imbrication sur le nom de la classe.

Dans votre cas, vous pouvez essayer:

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