2012-04-20 4 views
2

私のルートに問題があります。間違ってパラメーターが渡されたためです。私は、ユーザーの編集ページを移動しようとするたびに、私は次のエラーを取得する:ユーザーの編集と削除のルートでエラーが発生しました。名前空間のルーティング

No route matches {:action=>"edit", :controller=>"admin/users", :locale=>#<User id: 10, first_name: "Chase", last_name: "Jensen", email: "[email protected]", password_digest: "$2a$10$xTvG5gP73w2/nVW5jD.BSO3Z46S5v9oGogmfjo3gsGHf...", access_level: 2, last_login: nil, auth_token: nil, created_at: "2012-04-20 02:19:33", updated_at: "2012-04-20 02:19:33">} 

私はそれが言っていることに気づいています。locale =>#ユーザーID(ハッシュ)が、それが問題だ場合、私はわからないんだけど。そうであれば、私はなぜユーザーハッシュをロケールにしているのかわかりません:ロケール?
アプリ/ビュー/管理者/ユーザー/ index.html.erb

<% @owners.each do |owner| %> 
    <%= owner.first_name %> 
    <%= link_to "Edit Owner", edit_admin_user_path(owner) %> 
    <%= link_to "Delete Owner", admin_user_path(owner), :method => :delete, :confirm => "Are you sure you want to delete this owner?" %> 
<% end %> 

ユーザーコントローラー

class Admin::UsersController < Admin::BaseController 
    def edit 
    @user = User.find(params[:id]) 
    end 
    def update 
    @user = User.find(params[:id]) 

    if @user.update_attributes(params[:user]) 
     flash[:notice] = "User has been updated." 
     redirect_to @user 
    else 
     flash[:alert] = "User has not been updated." 
     render :action => "edit" 
    end 
    end 
    def index 
    @owners = User.all 
    end 
end 

路線:ここに私のアプリのコードの一部、それが不満だと

コードがあります。 rb(短縮)

scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do 
    namespace :admin do 
    resources :users do 
     collection do 
     get :newowner 
     end 
    end 
    end 
end 

レーキルート出力

newowner_admin_users GET /:locale/admin/users/newowner(.:format) {:locale=>/en|es/, :action=>"newowner", :controller=>"admin/users"} 
    admin_users GET /:locale/admin/users(.:format)   {:locale=>/en|es/, :action=>"index", :controller=>"admin/users"} 
       POST /:locale/admin/users(.:format)   {:locale=>/en|es/, :action=>"create", :controller=>"admin/users"} 
    new_admin_user GET /:locale/admin/users/new(.:format)  {:locale=>/en|es/, :action=>"new", :controller=>"admin/users"} 
edit_admin_user GET /:locale/admin/users/:id/edit(.:format) {:locale=>/en|es/, :action=>"edit", :controller=>"admin/users"} 
     admin_user GET /:locale/admin/users/:id(.:format)  {:locale=>/en|es/, :action=>"show", :controller=>"admin/users"} 
       PUT /:locale/admin/users/:id(.:format)  {:locale=>/en|es/, :action=>"update", :controller=>"admin/users"} 
       DELETE /:locale/admin/users/:id(.:format)  {:locale=>/en|es/, :action=>"destroy", :controller=>"admin/users"} 

なぜこのエラーが発生しているのか、経路が一致しているように見えるのは混乱しています。誰でもこれについての洞察を持っていますか?前もって感謝します。

編集:この時点のロケールで

は、アプリケーションのコントローラ

before_filter :set_locale 

private 
def set_locale 
    I18n.locale = params[:locale] if params[:locale].present? 
end 

と私のアプリケーションビューで アプリ/ビュー/レイアウト/ application.html.erb

に設定する必要があります
<%= link_to_unless_current "English", locale: "en" %> | 
<%= link_to_unless_current "Spanish", locale: "es" %> 

ENにデフォルト設定されていませんか?

答えて

1

を試してみてくださいロケール引数
を渡しませんでした。

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

あなたはそれを修正railscastライアンベイツに指定されているように、自分のアプリケーションのコントローラにこれを追加するedit_admin_user_path(owner, :locale => "en")

+0

うーん、それは動作していないようだ、私はすでにこの時点で設定する必要があります、私の編集を参照してください – ruevaughn

関連する問題