我有多语言应用程序,它使用下拉菜单在语言(区域设置)之间切换。当您从下拉列表中选择一个元素时,它会提交一个表单,该表单将使用参数“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 请求路由到 #index 而不是 #create ?
注意:我正在关注 Pragmatic Programmers 的“Agile web development with Rails”第 4 版一书的“15. 国际化”一章。