初心者 Rails の質問...もっと良い方法があることは知っています。これが思ったように機能しない理由を理解する助けが必要です。既存のデータベースとの「has_many」関係を使用して単純な結合テーブルを作成しています。「非レール」のフレンドリーなタイトルを保持する必要があります。
ブラウザに表示される <%= room.levels %> の出力は次のとおりです。[#<Level Name: "01 - FIRST FLOOR">]
01 - FIRST FLOOR だけを表示したいのですが、他のすべての情報は表示されません。
私は2つのテーブルを持っています。:部屋と:レベル
2 つのテーブルのスキーマは次のとおりです。
create_table "levels", :primary_key => "Id", :force => true do |t|
t.integer "TypeId"
t.integer "DesignOption"
t.string "Name"
t.float "Elevation"
create_table "rooms", :primary_key => "Id", :force => true do |t|
t.integer "DesignOption"
t.integer "PhaseId"
t.string "Comments"
t.float "Volume"
t.float "Perimeter"
t.integer "Level"
t.string "Occupancy"
t.float "Area"
t.string "Number"
t.string "Name"
end
add_index "rooms", ["Id"], :name => "Id", :unique => true
app/model/room.rb は次のとおりです。
class Room < ActiveRecord::Base
attr_accessible :Area, :Level, :Name, :Number, :Perimeter, :PhaseId, :Elevation
has_many :levels, :primary_key => 'Level', :foreign_key => 'Id', :select => 'Name' set_primary_key :Id
end
これは app/views/rooms/index.html.erb からのスニペットです:
<% @rooms.each do |room| %>
<tr>
<td><%= room.Name %></td>
<td><%= room.Number %></td>
<td><%= room.PhaseId %></td>
<td><%= room.levels %></td>
<td><%= link_to 'Show', room %></td>
<td><%= link_to 'Edit', edit_room_path(room) %></td>
<td><%= link_to 'Destroy', room, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
ありがとう!