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

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

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/09/21 02:41:57
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:kakicg No.1

回答回数44ベストアンサー獲得回数3

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

の部分を

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

に変更。では?

id:nagiwind

うまくいきました。

2007/09/21 02:39:27
id:masuidrive No.2

回答回数10ベストアンサー獲得回数2

ポイント35pt

初期状態の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>

id:nagiwind

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

2007/09/21 02:39:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません