Rails链接帮助程序未在.text.erb文件中本地化



我在RubyonRails 3.2:中的mailer模板中有这个操作

# password_reset.text.erb
<%= edit_password_reset_path(@user.password_reset_token) %>

不幸的是,当我点击该链接时,我得到了一个奇怪的路由错误:

No route matches {:action=>"edit", :controller=>"password_resets", :locale=>"Ze92D45dUPpfwsgbFmpYeg"}

奇怪的是,locale在这里似乎包含password_reset_token,而不是区域设置(例如ende)。

所以我想edit_password_reset_path没有自动本地化,这是导致错误的原因吗?

这怎么能解决?

以下是更多信息:

class PasswordResetsController < ApplicationController  
  def edit
    @user = User.find_by_password_reset_token!(params[:id])
  end
end
# routes.rb
scope '(:locale)' do
  resources :password_resets
  ....
end

您需要将令牌作为查询参数发送:

edit_password_reset_path(@user, password_reset_token: @user.password_reset_token)
# Passing in the @user fulfills the :id section of the url.

通过执行edit_password_reset_path(@user.password_reset_token),您将向:locale部分提供重置令牌。

同时提供区域设置:

edit_password_reset_path(@user, locale: "de", password_reset_token: @user.password_reset_token)

相关内容

  • 没有找到相关文章

最新更新