ruby-on-rails - 没有路由匹配缺少必需的键:[:locale]
问题描述
在此处输入图像描述 我遇到了一个问题,我无法解决。我创建了一个登录表单,我希望当它发送它时,用户会收到一封带有验证标志的电子邮件。但是当我发送表单时,我收到了这个错误:
用户#create 中的 ActionController::UrlGenerationError
没有路由匹配 {:action=>"confirm", :controller=>"users", :id=>26, :token=>"8ftJFxWKJqiMDDhtrqf1rVCq"},缺少必需的键:[:locale ]
谢谢你的帮助!
users_controller.rb
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.valid?
@user.save
UserMailer.confirm_email(@user).deliver_now
redirect_to :new
else
render 'new'
end
end
private
def user_params
params.require(:user).permit(:username, :email, :password, :password_confirmation)
end
路线.rb
scope "/:locale", locale: /en|fr|nl/ do
resources :projects, only:[:index]
resources :technos, only:[:index]
resources :blogs
resources :users, only: [:new, :create] do
member do
get 'confirm'
end
end
end
在confirm_email.html.erb
<%= confirm_user_url( id: @user.id, token: @user.confirmation_token ) %>
并在 user.rb
def confirm_email(user)
@user = user
mail( to: user.email, subject: "Votre inscription")
end
解决方案
我终于解决了这个问题:
<%= confirm_user_url( id: @user.id, token: @user.confirmation_token, locale: I18n.locale ) %>
并添加我的 application.rb thise 行:
config.action_mailer.default_url_options = { host: ' ' }
推荐阅读
- javascript - 推送数组在Javascript中的循环内不起作用
- bash - 使用没有 docker-machine 的 bash 脚本部署 docker swarm
- sql-server - EXCEL调用sql server存储过程=>列问题
- asp.net - 不在 Vb.net 中下载 Zip 文件
- php - 如何使用 php-crm-toolkit 在 Microsoft Dynamics Online CRM 中创建案例或事件
- python - 卡在“如果”,它不会继续过去
- sql-server - 从动态 SQL 中获取数据库名称的名称
- octobercms - 注册后如何创建临时欢迎页面?
- firebase - 当我在文档中有 500 多个字段时,Firestore Web 控制台会滞后。有替代方案吗?
- logging - 颤振:记录器