没有路由匹配缺少必需的密钥:[:id]

时间:2014-09-10 15:03:15

标签: ruby-on-rails routing

我对rails非常陌生,并且正在编辑最初由其他人编写的代码,所以我可能需要比普通人更深入的响应......

我在运行rake时遇到此错误: No route matches {:controller=>"users", :action=>"show", :id=>nil, :format=>nil} missing required keys: [:id]

似乎导致问题的一行是:

<%= link_to("My Account", user_path(current_user)) %>

链接实际上在localhost上正常工作,但是在第34行渲染:模板&#34;

it "renders new initiative form" do
  assign(:initiative, Initiative.new(location: Location.new,rewards:     [FactoryGirl.create(:reward)]))
  render :template => "initiatives/new.html.erb" (...etc.)

不确定此处还包含哪些内容,但UsersController是:

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

和佣金路线的结果:

    `batch_action_admin_users POST     /admin/users/batch_action(.:format)             admin/users#batch_action
                 admin_users GET      /admin/users(.:format)                          admin/users#index
                             POST     /admin/users(.:format)                          admin/users#create
              new_admin_user GET      /admin/users/new(.:format)                      admin/users#new
             edit_admin_user GET      /admin/users/:id/edit(.:format)                 admin/users#edit
                  admin_user GET      /admin/users/:id(.:format)                      admin/users#show
                             PATCH    /admin/users/:id(.:format)                      admin/users#update
                             PUT      /admin/users/:id(.:format)                      admin/users#update
                             DELETE   /admin/users/:id(.:format)                      admin/users#destroy
 batch_action_admin_comments POST     /admin/comments/batch_action(.:format)          admin/comments#batch_action
              admin_comments GET      /admin/comments(.:format)                       admin/comments#index
                             POST     /admin/comments(.:format)                       admin/comments#create
               admin_comment GET      /admin/comments/:id(.:format)                   admin/comments#show
            new_user_session GET      /users/sign_in(.:format)                        devise/sessions#new
                user_session POST     /users/sign_in(.:format)                        devise/sessions#create
        destroy_user_session DELETE   /users/sign_out(.:format)                       devise/sessions#destroy
     user_omniauth_authorize GET|POST /users/auth/:provider(.:format)                 omniauth_callbacks#passthru {:provider=>/twitter|facebook/}
      user_omniauth_callback GET|POST /users/auth/:action/callback(.:format)          omniauth_callbacks#(?-mix:twitter|facebook)
               user_password POST     /users/password(.:format)                       devise/passwords#create
           new_user_password GET      /users/password/new(.:format)                   devise/passwords#new
          edit_user_password GET      /users/password/edit(.:format)                  devise/passwords#edit
                             PATCH    /users/password(.:format)                       devise/passwords#update
                             PUT      /users/password(.:format)                       devise/passwords#update
    cancel_user_registration GET      /users/cancel(.:format)                         registrations#cancel
           user_registration POST     /users(.:format)                                registrations#create
       new_user_registration GET      /users/sign_up(.:format)                        registrations#new
      edit_user_registration GET      /users/edit(.:format)                           registrations#edit
                             PATCH    /users(.:format)                                registrations#update
                             PUT      /users(.:format)                                registrations#update
                             DELETE   /users(.:format)                                registrations#destroy
                        user GET      /users/:id(.:format)                            users#show`

也许有人可以提供帮助?

1 个答案:

答案 0 :(得分:0)

在渲染模板之前,您应该使用Devise登录助手进行登录。 https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara