0

私のプロジェクトには、「治療」モデルと「カテゴリー」モデルの2つのモデルがあります

class Category < ActiveRecord::Base
attr_accessible :typ
has_many :treatments
end  

class Treatment < ActiveRecord::Base
belongs_to :patient
belongs_to :category
attr_accessible :content, :day, :typ, :category_typ
end

したがって、私の治療フォームでは、ユーザーはカテゴリも選択できます。

<div class="field">
<%= f.label :category_id %><br />
<%= f.collection_select :category_id, Category.find(:all), :id, :typ %>
</div>

私の問題は、後でcategory_idを表示できることですが、カテゴリタイプを表示する方法が本当にわかりません:

<% @patient.treatments.each do |treatment| %>
<tr>
<td><%= treatment.category_id %></td>
<td><%= treatment.content %></td>
<td><%= treatment.day %></td>
</tr>
<% end %>

category_typ を試してみましたが、うまくいきませんでした! 私はレールの初心者で、誰かが私を助けてくれることを願っています! ありがとう!

def show
@patient = Patient.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @patient }
end
end
4

3 に答える 3

1

を使用しますtreatment.category.typ

@patient = Patient.where(:id => params[:id]).includes(:treatment => [:category]).firstコントローラーにも必要です。

于 2013-06-16T17:15:41.123 に答える
1

わかりましたどういうわけかそれで動作します

<td><%= treatment.category && treatment.category.typ %></td>,

多分誰かがこれが機能する理由を知っていますか?

于 2013-06-16T17:39:03.223 に答える
1

それは動作します

  <td><%= treatment.category && treatment.category.typ %></td>

一部の処理オブジェクトではカテゴリが nil であるためです。処理にカテゴリが必要な場合は、モデル レベルでの検証と、データベースでの外部キー制限を行います。

  class Treatment
    validates_presence_of :treatment
  end

そして、移行で

  remove_column :treatments, :category_id
  add_column :treatments, :category_id, :null => false

これにより、データベースの参照整合性が保証されます。関係が必要ない場合は、これを無視してください。.try を使用してコード 1 メソッド呼び出しを行うこともできます

 <td><%= treatment.category.try(:typ)%></td>
于 2013-06-16T17:51:33.770 に答える