如何获取外键名称

时间:2013-08-06 13:00:30

标签: ruby-on-rails ruby

在我的Rails应用程序中,我有一个设备端口的列表视图,每个设备端口都属于一个设备:

device.rb

has_many :device_ports, :foreign_key => "device_id"

device_port.rb

belongs_to :device

device_port_controller.rb

def list
    @device_ports = DevicePort.paginate(:all, :page => params[:page], :per_page => 100, :order => "name")
    @devices = Device.find(:all)
end

list.rhtml

<table width="100%">
    <tr>
        <th>Name</th>
        <th>Device</th>
    </tr>

    <%= render :partial => 'device_port/list_item', :collection => @device_ports %>
</table>

_ list_item.rhtml

<tr>
    <td><a href='/device_port/update/<%= list_item.id %>'><%= list_item.name %></a></td>
    <td><%= list_item.device_id %></td>
</tr>

所以我正在显示device_id表中的device_ports,但实际上我想要显示name表的devices列。

我做了一些非常相似的事情,可能在我的应用程序的其他地方稍微有点困难,我选择了正确的设备名称,但是我似乎无法弄清楚如何在选择菜单的上下文中执行此操作

我在上面的控制器中的@devices变量中有设备,并试图使用list_item.device_id来查找它,但它似乎不起作用。

这可能是一件非常简单的事情,但我似乎无法找到获得理想结果的正确方法。

2 个答案:

答案 0 :(得分:1)

as device_ports belongs_to device so list_item.device.name谢谢!

答案 1 :(得分:1)

我刚刚在控制台中对此进行了测试,但它应该可行。您可以在模型上调用返回数组的columns

所以,我刚用过我的用户模型:

User.columns[0].name #=> 'id'

据推测,你的

Device.columns[x].name

编辑:我把这个问题读作“[列]的名称”