新手 Rails 问题...我知道有更好的方法来做到这一点。我需要帮助来理解为什么这不能像我认为的那样工作。我正在使用与预先存在的数据库的“has_many”关系做一个简单的连接表。我需要保留“非导轨”友好的标题。
这是在浏览器中看到的输出 <%= room.levels %>:[#<Level Name: "01 - FIRST FLOOR">]
我只想看到 01 - FIRST FLOOR 而没有所有其他信息。
我有两张桌子。:rooms 和 :levels
这是两个表的架构:
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>
谢谢!