Rails – pathヘルパーでURLがスラッシュではなくドットになる
products_path()というヘルパーが存在した場合、products_path(1)と指定すると想定とは異なるURLが生成されてしまいました。
・想定:http://xxx.com/products/1
・実際:http://xxx.com/products.1
スラッシュ”/”を想定していたのに”.”ドットになってしまいました。
解決方法は単純
解決方法は単純です。
・修正前:products_path(1)
↓
・修正後:product_path(1)
と複数形から単数形に変更するです。
原因はpluralization error
「Path helpers generate paths with dots instead of slashes」というスレッドで解説があります。
“message_threads_path(1)”というpathヘルパーを利用したところ、スラッシュ(/)ではなくドット(.)になってしまう、という報告に対して、以下の回答があります。
Yes, this is a pluralization error.
By passing the ID 1, I assume that you wish to display a single record.
So you need to use the singular ‘message_thread’:
「pluralization errorだよ」の一言ですね。
“pluralization”とは「複数にすること」を意味する英語で、Railsではpluralizeメソッドがあります。
#pluralizeのリファレンスはこちら。
こちらのメモは「railsのpathヘルパーでスラッシュの代わりにピリオドになっちゃうのでrails consoleでいろいろ試した」を参考にさせて頂きました。
関連記事:
・Rails – 1つのフォームで複数モデルのデータを扱う方法
・Rails – nested_formを使う時は”nested_form_for”を利用(”form_for”ではない)
・TechAcademyの体験談 – 良い所・悪い所
関連記事
-
-
Rails – nested_formを使う時は”nested_form_for”を利用(”form_for”ではない)
Ruby on Railsでは、フォーム中に入力項目(input)を追加可能とす …
-
-
Rails – 1つのフォームで複数モデルのデータを扱う方法
Ruby on Railsで ・1つのフォームで ・複数のモデルのデータを扱いた …