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

Ruby on Railsについて質問です。
バージョンは3.0.5です。
?
モデルを「_(アンダースコア)」を含む名前にして「rails generate scaffold」で生成を行いました。
たとえばモデル名を「hoge_fuga」にしたとします。
生成されたコントローラークラス名は「HogeFugasController」となりました。
?
「rake db:migrate」を行い、Webrickサーバを立ち上げ、HogeFugasコントローラーのindexアクションにアクセスを行いました(http://localhost:3000/hogeFugas/index)。
しかし、「そのようなルートがない」というエラーメッセージが表示されアクセスすることができませんでした。
?
これは、モデル名にアンダースコアを含むのが規約に違反しているのでしょうか?
それともアクセスするURLが間違っているのでしょうか?
?
下記のURLについては試してみました。
http://localhost:3000/hogeFugas
http://localhost:3000/HogeFugas/index
http://localhost:3000/hogeFuga/index
http://localhost:3000/hoge_fuga/index
http://localhost:3000/hoge_fugas/index
いづれも同様のエラーでした。

●質問者: Gaasu
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nuna

http://localhost:3000/hoge_fugas でアクセスできるはずです。
rake routes をしてみるとわかりますが、 /hoge_fugas/index というルーティングはありません。

config/routes.rb に resources :hoge_fugas と書かれていると思いますが、
こういった REST なルーティングを指定している場合には /hoge_fugas への GET が、リソース hoge_fugas (hoge_fuga の集合)の取得=一覧表示という意味になります。

昔は index を付けてましたが、REST 的には冗長なので付けないようになったという流れです。


Gaasuさんのコメント
回答ありがとうございます。

2 ● うぃんど

Ruby のリファレンスマニュアルより
http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fdef.html

クラス名はアルファベットの大文字で始まる識別子です


Railsでは下記のようになります
・コードはキャメルケース(単語の先頭大文字/区切り無し)
HogeFugasController
・URLはスネークケース(全て小文字/区切りはアンダーバー)
hoge_fuga

アンダーバーを使うなという規約はありませんが、
モデル名も最初からキャメルケースにしておいたほうが面倒もないですね


Gaasuさんのコメント
回答ありがとうございます。
関連質問

●質問をもっと探す●



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