1

フォームを使用してデータベースにデータを追加しようとすると、エラー unknown_attribute id_lekarza (id_pacjenta および id_poradni と同じ) が発生し、その理由がわかりません。フォームを助けてください:

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

モデル:

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

スキーマ:

  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
4

2 に答える 2

2

あなたのbelongs_to関連付けが問題のようです。Rails は、あなたが物事に何を命名することを期待しているかについて、本当に独断的です。モデルが医師に属している場合 (Refferal モデルの場合)、Rails は属性が と呼ばれることを期待していますdoctor_id

これを試して:

属性名を から に変更:id_lekarzaし、その他についても同様に変更します:lekarza_id。次に、モデルの関連付けを変更して、属性が属する実際のクラスを指定します。

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

has_manyまた、連想を複数形に変更したくなるでしょう:has_many :laboratorias

幸運を!

于 2014-06-15T22:04:44.753 に答える