2014-06-15 2 views
1

J'ai problème parce que lorsque je tente d'ajouter des données à ma base de données en utilisant le formulaire que j'obtiens l'erreur unknown_attribute id_lekarza (la même chose avec id_pacjenta et id_poradni) et je ne sais pas pourquoi, s'il vous plaît aider Forme:Ruby ajouter db

<div id="container"> 

<%= form_for(@refferal) do |f| %> 
    <div class="field"> 
    <%= f.label :rodzaj_badania %><br /> 
    <%= f.text_field :rodzaj_badania, placeholder: "Podaj jakie badanie ma byc wykonane", size: 35 %> 
    </div> 
    <div class="field"> 
    <%= f.label :ilosc_badan %><br /> 
    <%= f.number_field :ilosc_badan, placeholder: "Wpisz ilosc badan" %> 
    </div> 
    <div class="field"> 
    <%= f.label :opis %><br /> 
    <%= f.text_field :opis, placeholder: "Podaj krótki opis dla pracownika rejestracji/laboratorium", size: 50%> 
    </div> 
    <div class="field"> 
    <%= f.label :data %><br /> 
    <%= f.datetime_select :data, placeholder: "Podaj termin badania" %> 
    </div> 
    <div class="field"> 
    <%= f.hidden_field :id_lekarza, :value => Doctor.find(session[:current_doctor_id]).id %> 
    </div> 
    <div class="field"> 
    <%= f.hidden_field :id_pacjenta, :value => Patient.find(session[:current_patient_id]).id %> 
    </div> 
    <div class="field"> 
    <%= f.hidden_field :id_poradni, :value => Clinic.find(session[:current_clinic_id]).id %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Utwórz skierowanie" %> 
    </div> 
<% end %> 
</div> 

Modèle:

class Refferal < ActiveRecord::Base 
    attr_accessible :data, :id_lekarza, :id_pacjenta, :id_poradni, :id_pracownika, :ilosc_badan, :opis, :rodzaj_badania 
    belongs_to :patient 
    belongs_to :employee 
    belongs_to :clinic 
    belongs_to :doctor 

    has_many :laboratoria 

end 

schéma:

create_table "refferals", force: true do |t| 
    t.string "rodzaj_badania" 
    t.integer "ilosc_badan" 
    t.string "opis" 
    t.datetime "data" 
    t.integer "id_lekarza" 
    t.integer "id_pacjenta" 
    t.integer "id_pracownika" 
    t.integer "id_poradni" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

Répondre

2

On dirait que vos associations belongs_to pourrait être votre problème. Rails est vraiment opiniâtre sur ce qu'il attend de vous pour nommer les choses. Si votre modèle appartient à un médecin (ce qui est le cas avec le modèle Refferal), Rails s'attend à ce que l'attribut soit appelé doctor_id.

Essayez ceci:

Modifier les noms d'attributs de :id_lekarza à :lekarza_id, et ainsi de suite pour les autres. Modifiez ensuite les associations de modèle pour spécifier la classe réelle ces attributs appartiennent à:

class Refferal < ActiveRecord::Base 
    attr_accessible :data, :id_lekarza, :id_pacjenta, :id_poradni, :id_pracownika, :ilosc_badan, :opis, :rodzaj_badania 

    belongs_to :pacjenta, class_name: 'Patient' 
    belongs_to :employee 
    belongs_to :poradni, class_name: 'Clinic' 
    belongs_to :lekarza, class_name: 'Doctor' 
    has_many :laboratoria 
end 

En outre, vous aurez probablement envie de changer votre has_many association au pluriel: has_many :laboratorias

Bonne chance!

+0

Merci, j'ai migré cette table encore et changé les clés étrangères à doctor_id, patient_id et travaille maintenant :) Merci beaucoup;) – smiaro

0

Je ne sais pas cl tôt mais mon soupçon est que l'identification est probablement réservée aux références.

Essayez de renommer les champs de;

id_lekarza, id_pacjenta , id_pracownika, id_poradni 

à

lekarza, pacjenta , pracownika, poradni 
Questions connexes