2017-10-03 14 views
0

잘 작동하는 멋진 양식을 사용했지만 일단 번역을 추가하면 나는 다음과 같은 얻을 오류 :ActionController :: UrlGenerationError in UsersController # create ... 필수 키가 누락되었습니다 : [: id], 가능한 일치하지 않는 제약 조건 : [: locale]

routes.rb

: 여기

Error Message

내가 가진 몇 가지 중요한 파일입니다 1,515,
Rails.application.routes.draw do 
    scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do 
    get 'sessions/new' 
    get 'teamscrs/index' 
    get 'teamscrs/new' 
    get 'teamscrs/show' 
    get 'profile', to: 'teamscrs#show' 
    get 'login', to: 'sessions#new' 
    get 'users', to: 'users#new' 
    delete 'logout', to: 'sessions#destroy'  
    post 'login', to: 'sessions#create' 

    resources :users  

    root 'teamscrs#index' 
    end 

    match '*path', to: redirect("/#{I18n.default_locale}/%{path}"), :via => [:get, :post] 
    match '', to: redirect("/#{I18n.default_locale}"), :via => [:get, :post] 

    #get '/teamscrs' => 'teamscrs#home' 
end 

users_controller.rb

class UsersController < ApplicationController 
    def index 
    end 

    def show 
     @user = User.find(params[:id]) 
    end 

    def new 
     @user= User.new 
    end 

    def create 
     @user = User.new(user_params) 

     if @user.save 
      flash[:success] = t(".sukces") 
      redirect_to @user 
     else 
      flash.now[:danger] = t(".fail") 
      render 'new' 
     end 

    end 

private 
    def user_params 
     params.require(:user).permit(:name, :email, :password, :password_confirmation) 
    end 
end 

application_controller.rb

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 
    before_action :set_locale 
    helper_method :current_user, :logged_in? 

    def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
    end 

    def logged_in? 
    !!current_user 
    end 

    def must_login 
    if !logged_in? 
     flash[:danger] = t(".mustlogin") 
     redirect_to login_path 
    end 
    end 

private 
    def set_locale 
    I18n.locale = params[:locale] || I18n.default_locale 
    end 

    def default_url_option(options = {}) 
    {locale: I18n.locale} 
    end 

end 

사용자/new.html.erb

... 
     <%= form_with scope: :user, url: users_path, local: true do |form| %> 
      <div class="form-group"> 
       <%= form.label(:name,t('.username'))%> 
       <%= form.text_field :name, class: 'form-control' %> 
      </div> 

      <div class="form-group"> 
       <%= form.label(:email,t('.email'))%> 
       <%= form.text_field :email, class: 'form-control' %> 
      </div> 

      <div class="form-group"> 
       <%= form.label(:password_digest,t('.pass'))%> 
       <%= form.password_field :password, class: 'form-control' %>    
      </div> 

      <div class="form-group"> 
       <%= form.label(:password2, t('.passc'))%> 
       <%= form.password_field :password_confirmation, class: 'form-control' %>     
      </div> 

      <%= form.submit t('.join'), class: 'btn btn-success' %> 
     <% end %> 
... 

사용자/show.html.erb

<p> 
    <strong>Użytkownik:</strong> 
    <%= @user.name %> 
</p> 

<p> 
    <strong>email:</strong> 
    <%= @user.email %> 
</p> 

설정/environment.rb에 I에 유래, 국제화 가이드를 읽고 유튜브 비디오를보고 하루 종일 보냈다

... 
Rails.application.configure do |variable| 
    config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**/*.{rb,yml}').to_s] 
    I18n.available_locales = [:en, :pl] 
    I18n.default_locale = :pl 
end 
... 

. 나는 초보자에 불과하다. 지원하십시오.

redirect_to @user 

에 :

답변

0

나는 변경하여 그것을 해결 내가 default_url_options 구현의 원인을 읽은 후, 나는 명시 적으로 ID를 전달하는 레일을 알려해야

redirect_to controller: 'users', action: 'show', id: @user.id