本地化后,链接到重置密码不起作用

时间:2018-04-06 21:30:17

标签: ruby-on-rails ruby-on-rails-4 localization

我根据Michael Hartl的教程https://www.railstutorial.org/book/password_reset创建了一个重置​​密码的链接 在我开始在我的应用程序中使用不同语言(本地化)的那一刻,它工作正常。

不要将包含以下链接的电子邮件放入我的邮箱:http://my-page.com/password_resets/3BdBrXeQZSWqFIDRN8cxHA/edit?email=michael%40michaelhartl.com 我收到代码错误:edit_password_reset_url(@ user.reset_token,email:@ user.email),即:

ActionView :: Template ::错误(没有路由匹配{:action =>“edit”,:controller =>“password_resets”,:email =>“michael@michaelhartl.com”,:id =&gt ; nil,:locale =>“Ti1LJmD4AcBwN3TNUENnBw”}缺少必需的键:[:id]):

因为,我猜,作为“id”的部分现在是“locale”。而且我不知道如何跳过它,创建:要么像之前一样的链接,要么另外考虑I18n.locale的链接(这将是完美的)。它似乎必须在链接级别解决(不是例如routes.rb,因为应用程序的其余部分可以在3种语言中正常工作)。

有没有人知道应该如何创建此链接?

1 个答案:

答案 0 :(得分:0)

我正在读这个:https://phraseapp.com/blog/posts/rails-i18n-setting-and-managing-locales/

看起来你正在寻找路线范围: http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

基本上,您已经在Rails自动期望ID所在的位置添加了区域设置。所以你需要添加一些代码告诉你的应用程序'嘿伙计,这第一个参数是语言环境,而不是ID!'

想一想如何点击/posts/1/posts/new,Rails知道'1'是一个ID,'new'不是。