「view」
<% for table in @tables %>
<tr>
<% for column in Table.content_columns %>
<td><%=h table.send(column.name) %></td>
<% end %>
<td><%= link_to 'Show', :action => 'show', :id => table %></td>
<td><%= link_to 'Edit', :action => 'edit', :id => table %></td>
<td><%= link_to 'Destroy', { :action => 'destroy', :id => table }, :confirm => 'Are you sure?', :method => :post %></td>
</tr>
<% end %>
</table>
「controller」
def list
@table_pages, @tables = paginate :tables, :per_page => 1
end
これだと、テーブル中に5つのカラムがあるとすべて表示されてしまいます。
カラム名 a、b、c、d、eがあるとして、bとdだけをlistに表示させたい場合はどうすればいいのでしょうか。
コントローラで @tablesに
Table.find(:all, :select => "b" ) として、1つのカラムだけ取得しようとすると、
missing attribute: b
とエラーメッセージが表示されてしまいました。
どうすればいいのでしょうか?よろしくお願いします。
<% for column in Table.content_columns %> <td><%=h table.send(column.name) %></td> <% end %>
の部分を
<td><%=h table.b %></td><td><%=h table.d %></td>
に変更。では?
初期状態のscaffoldは、モデルのcontent_columnsを見て、全てのカラムを表示するコードになっています。
質問の様に特定のカラムだけ表示させたい場合は、下記のように表示するコードをハードコーディングします。
<% for table in @tables %>
<% end %>
</table>
ありがとうございました。
うまくいきました。