Ни один маршрут не соответствует отсутствующим обязательным ключам: [: locale] - PullRequest
2 голосов
/ 05 апреля 2020

введите описание изображения здесь Я столкнулся с проблемой, не могу решить. Я создал форму для входа, и я хотел бы, чтобы при ее отправке пользователь получал письмо с токеном для подтверждения знака. Но когда я отправляю форму, я получил эту ошибку:

ActionController :: UrlGenerationError в Users # create Не найдено ни одного маршрута {: action => «verify»,: 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 

rout.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 

в Подтверждении_Почты. html .erb

<%= confirm_user_url( id: @user.id, token: @user.confirmation_token ) %>

и в пользователе .rb

def confirm_email(user)
  @user = user 
  mail( to: user.email, subject: "Votre inscription") 
end 

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Я наконец исправил проблему с:

<%= confirm_user_url( id: @user.id, token: @user.confirmation_token, locale: I18n.locale ) %>  

и добавил строку application.rb thise:

config.action_mailer.default_url_options = { host: ' ' }
1 голос
/ 05 апреля 2020

Попробуйте добавить следующее в свою электронную почту:

<%= confirm_user_url( id: @user.id, token: @user.confirmation_token, locale: 'fr' ) %>

Это может сработать.

...