人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

railsで、scaffoldするとlist.rhtmlに以下のようなコードが生成されます。

「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
とエラーメッセージが表示されてしまいました。

どうすればいいのでしょうか?よろしくお願いします。

●質問者: nagiwind
●カテゴリ:インターネット ウェブ制作
✍キーワード:ALL def Missing Rails scaffold
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kakicg
●35ポイント
<% for column in Table.content_columns %>
<td><%=h table.send(column.name) %></td>
<% end %>

の部分を

<td><%=h table.b %></td><td><%=h table.d %></td>

に変更。では?

◎質問者からの返答

うまくいきました。


2 ● masuidrive
●35ポイント

初期状態のscaffoldは、モデルのcontent_columnsを見て、全てのカラムを表示するコードになっています。

質問の様に特定のカラムだけ表示させたい場合は、下記のように表示するコードをハードコーディングします。


<% for table in @tables %>


<%= h(table.b) %>

<%= h(table.d) %>

<%= link_to 'Show', :action => 'show', :id => table %>

<%= link_to 'Edit', :action => 'edit', :id => table %>

<%= link_to 'Destroy', { :action => 'destroy', :id => table }, :confirm => 'Are you sure?', :method => :post %>


<% end %>

</table>

◎質問者からの返答

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ