- 締切済み
ruby on railsについてなのですが、scaffoldで入力フ
ruby on railsについてなのですが、scaffoldで入力フォーム、一覧表示、詳細表示を作成しました。 そこで、一覧表示の際、テーブルのカラムに存在しない番号を一番左に表示させたいと考えています。3件存在すれば、上から1,2,3とういようにです。テーブルのIDを表示するとIDの1を削除した場合、2,3,4となってしまうので、3件あれば、必ず、1,2,3としたいのです。 環境は以下のとおりです。 ruby1.8.6 rails 2.3.5 db:mysql gems:1.3.5 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mimzy
- ベストアンサー率33% (32/96)
回答No.1
>必ず、1,2,3としたいのです。 何故こうしたいのかその理由を書きましょう。 そもそもこれはRuby on Railsの問題ではありません、Mysqlの仕様です。 IDはテーブル属性を見るとauto-incrementになっているのでレコードを削除すればそうなってしまいます。 IDを付け直すことも可能でしょうがレコード数が多いと現実的ではありません。 もしWebページ上番号順リスト形式で表示したいというのであれば、 テーブルIDを直接使うのではなく<OL>タグを使うなどViewでの工夫が必要かと思います。
お礼
返信ありがとうございました。 おっしゃるように半分以上はMySQLの問題でした。 Controllerに下記のように書きました。 SELECTの部分を"@rownum :=@rownum+1 as 'num',incidents.*" FORMの部分を"incidents,(select @rownum :=0) r" としました。 あとはView側でnumを読み込んでいます。