Rake routes'match'mapping to the wrong action

问题描述:

我的问题与映射到使用命名路由的控制器/操作有关。我试图将'/ profile'映射到'customers#show'。我的路线文件看起来像这样:Rake routes'match'mapping to the wrong action

root :to => 'pages#home' 

    ## named routes 
    match "profile" => "customers#show", :as => 'profile' 
    match 'signin' => 'sessions#new', :as => 'signin' 
    match 'signout' => 'sessions#destroy', :as => 'signout' 

    resources :customers do 
    member do 
     get 'add_card' 
     post 'submit_card' 
    end 
    end 


    resources :payments, :only => [:show, :new] 
    delete 'payments/delete_recurring_payment' 
    post 'payments/submit_non_recurring' 
    post 'payments/submit_recurring' 

    resources :sessions, :only => [:create, :destroy, :new] 

运行“耙路线”给了我这样的:

      root  /           pages#home 
         profile  /profile(.:format)       customers#show 
         signin  /signin(.:format)       sessions#new 
         signout  /signout(.:format)       sessions#destroy 
      add_card_customer GET /customers/:id/add_card(.:format)   customers#add_card 
     submit_card_customer POST /customers/:id/submit_card(.:format)   customers#submit_card 
        customers GET /customers(.:format)       customers#index 
           POST /customers(.:format)       customers#create 
       new_customer GET /customers/new(.:format)      customers#new 
       edit_customer GET /customers/:id/edit(.:format)    customers#edit 
        customer GET /customers/:id(.:format)      customers#show 
           PUT /customers/:id(.:format)      customers#update 
           DELETE /customers/:id(.:format)      customers#destroy 
        new_payment GET /payments/new(.:format)      payments#new 
         payment GET /payments/:id(.:format)      payments#show 

这里就是我难倒。当我去为localhost:3000/profile文件,我得到一个错误的路由这样说:

No route matches {:action=>"edit", :controller=>"customers"} 

这似乎很奇怪,因为确实是“客户#编辑”的路线,由于我的客户声明作为一种资源。

然而,当我去的“localhost:3000 /登入”我被路由到“客户#秀”这是我想“/资料”来的路线。

好像我是航线“一次性”在我的路线文件,但我不知道为什么。任何帮助将非常感激。

感谢

更新1:添加我的客户控制器

class CustomersController < ApplicationController 
    layout "payments_layout" 

    def show 
    @customer = current_user 
    get_account_info(@customer) 
    get_payment_history(@customer, 10) 
    end 

    def new 
    @title = 'Create an account' 
    @customer = Customer.new 
    end 

    def edit 
    @customer = current_user 
    get_account_info(@customer) 
    end 

    def update 
    @customer = current_user 
    if @customer.update(params[:customer]) 
     redirect_to @customer 
    else 
     @card_message = "Use this form to add a credit card to your account. You must have a credit card associated with your account in 
         in order to make payments on our system." 
     get_account_info(@customer) 
     render 'edit' 
    end 
    end 

    def create 
    @customer = Customer.new(params[:customer]) 
    if @customer.save_and_get_stripe_id 
    sign_in(@customer) 
    redirect_to @customer 
    else 
    @title = 'Create an account' 
    render 'new' 
    end 
    end 

    def add_card 
    @customer = current_user 
    get_account_info(@customer) 
    @card_message = "Use this form to add a credit card to your account. You must have a credit card associated with your account in 
        in order to make payments on our system." 
    end 

    def submit_card 
    @customer = current_user 
    res = @customer.add_or_update_card(params) 
    if res 
     redirect_to @customer 
    else 
     @error = res 
     customer.get_account_info(@customer) 
     render 'add_card' 
    end 
    end 

end 
+0

你可以帮助你的客户控制器吗? – damienbrz 2013-02-21 23:44:59

检查你的意见。

你有一个链接编辑您的用户资料?

好像你到正确的控制器和实际行动路线,但有一些链接,耙不能路由,例如你不会将ID传递给你的edit_customer_path链接。