1

私の 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が、機能していないようです。

それはおそらく非常に簡単なことですが、望ましい結果を得るための適切な方法を見つけることができないようです.

4

2 に答える 2

1

コンソールでこれをテストしましたが、動作するはずです。columns配列を返すモデルを呼び出すことができます。

それで、私が今 User モデルを使用したもの:

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

おそらくあなたのものは

Device.columns[x].name

編集:質問を「[の]列の名前」と読みました

于 2013-08-06T13:13:09.553 に答える
1

device_ports belongs_to デバイスなので、list_item.device.nameありがとう!

于 2013-08-06T13:09:44.617 に答える