ruby-on-rails - 没有路由匹配 { :action= >"show", :controller= >"users"} 错误

标签 ruby-on-rails ruby testing controller routes

我正在进行以下操作:

users_controller_spec 中的 rspec 测试:

it "should redirect to the user show page" do
    post :create, :user => @attr
    response.should redirect_to(user_path(assigns(:user)))
end

在我的 users_controller 中,我有以下内容:

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

def create
  @title = "Sign up"
  @user = User.new(params[:user])
  if @user.save
    redirect_to @user, :notice => "Signed Up!"
  else
    @title = "Sign up"
    render "new"
  end
end

在我的 routes.rb 中,我有以下内容:

  Psra::Application.routes.draw do
  resources :users
  resources :sessions

  # Root Route

  root :to => 'pages#home'

  # Pages Routes

  match '/contact', :to => 'pages#contact'
  match '/about',   :to => 'pages#about'
  match '/help',    :to => 'pages#help'
  match '/signup',  :to => 'users#new'

  # Users Route

  match '/signup',  :to => 'users#new'

  #Sessions Routes
  get "logout" => "sessions#destroy", :as => "logout"
  get "login" => "sessions#new", :as => "login"

end

这是我的佣金路线

       users GET    /users(.:format)             {:action=>"index", :controller=>"users"}
             POST   /users(.:format)             {:action=>"create", :controller=>"users"}
    new_user GET    /users/new(.:format)         {:action=>"new", :controller=>"users"}
   edit_user GET    /users/:id/edit(.:format)    {:action=>"edit", :controller=>"users"}
        user GET    /users/:id(.:format)         {:action=>"show", :controller=>"users"}
             PUT    /users/:id(.:format)         {:action=>"update", :controller=>"users"}
             DELETE /users/:id(.:format)         {:action=>"destroy", :controller=>"users"}
    sessions GET    /sessions(.:format)          {:action=>"index", :controller=>"sessions"}
             POST   /sessions(.:format)          {:action=>"create", :controller=>"sessions"}
 new_session GET    /sessions/new(.:format)      {:action=>"new", :controller=>"sessions"}
edit_session GET    /sessions/:id/edit(.:format) {:action=>"edit", :controller=>"sessions"}
     session GET    /sessions/:id(.:format)      {:action=>"show", :controller=>"sessions"}
             PUT    /sessions/:id(.:format)      {:action=>"update", :controller=>"sessions"}
             DELETE /sessions/:id(.:format)      {:action=>"destroy", :controller=>"sessions"}
        root        /                            {:controller=>"pages", :action=>"home"}
     contact        /contact(.:format)           {:controller=>"pages", :action=>"contact"}
       about        /about(.:format)             {:controller=>"pages", :action=>"about"}
        help        /help(.:format)              {:controller=>"pages", :action=>"help"}
      signup        /signup(.:format)            {:controller=>"users", :action=>"new"}
                    /signup(.:format)            {:controller=>"users", :action=>"new"}
      logout GET    /logout(.:format)            {:action=>"destroy", :controller=>"sessions"}
       login GET    /login(.:format)             {:action=>"new", :controller=>"sessions"}

这一切都会导致以下错误:

1) UsersController POST 'create' success should redirect to the user show page
     Failure/Error: response.should redirect_to(user_path(assigns(:user)))
     ActionController::RoutingError:
       No route matches {:action=>"show", :controller=>"users"}
     # ./spec/controllers/users_controller_spec.rb:95:in `block (4 levels) in <top (required)>'

对我做错了什么有什么想法吗?

最佳答案

在我看来,show 操作没有获取获取正确页面所需的用户信息。 assigns 方法只是创建一个实例变量。 user_path 调用需要用户模拟或对象才能使调用正常工作。

关于ruby-on-rails - 没有路由匹配 { :action= >"show", :controller= >"users"} 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8068957/

相关文章:

ruby-on-rails - 带有可选参数的 Rails Search?

测试不可预测的功能

ruby - 使用 ruby​​ 执行半自动化测试

java - Maven 在构建 Java 项目时运行带有 junit @Ignore 注释的测试

ruby-on-rails - 处理 Rails3 插件中设置的适当方法?

ruby-on-rails - Rails 模型可以有多复杂?样本项目?

javascript - 引用 sprockets 的 Backbone rails 模型

ruby-on-rails - Rails 5 Postgresql has_many 通过关联

ruby-on-rails - 如何在 Rails 5 中的现有表中添加新列?

ruby - 如何重命名目录?