0

ドロップダウンを使用して言語 (ロケール) を切り替える多言語アプリケーションがあります。ドロップダウンから要素を選択すると、パラメーター「set_locale=es」を使用して特定のコントローラーに送信されるフォームが送信されます。常に次のメッセージで失敗します: " undefined method `permit' for nil:NilClass"。

これは非常に明白です:

  • フォームは で作成されform_tag mymodel_pathます。ここで、MyModel は既存の ActiveRecord モデルであり、完全な CRUD スキャフォールドを備えています。
  • 「routes.rb」ファイルはresources :mymodel、これはルート POST (/:locale)/mymodels(.:format) mymodels#createが存在することを意味します。
  • フォームは POST モデルで動作するため、ロケール セレクターを使用すると、コントローラーは POST を受信し、新しい MyModel を作成していると見なされるため、明らかに例外を発生させる#create行を呼び出すメソッド にルーティングされます。params[:mymodel].permit(:title,:and_more)

どうすればこれを解決できますか? パラメータ「set_locale」を使用した POST リクエストを #create ではなく #index にルーティングする方法はありますか?

注: Pragmatic Programmers による書籍「Agile web development with Rails」第 4 版の「15. Internationalization」の章に従っています。

4

1 に答える 1