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の体験談 – 良い所・悪い所

スポンサード リンク

  関連記事

Ruby on Rails
Rails – nested_formを使う時は”nested_form_for”を利用(”form_for”ではない)

Ruby on Railsでは、フォーム中に入力項目(input)を追加可能とす …

Ruby on Rails
Rails – 1つのフォームで複数モデルのデータを扱う方法

Ruby on Railsで ・1つのフォームで ・複数のモデルのデータを扱いた …

↑PageTop