【问题标题】:error when routing路由时出错
【发布时间】:2013-01-16 00:13:02
【问题描述】:

我为一些静态页面和一些控制器(用户和使用症状)定义了路由。 当我导航到 localhost:3000/users/1 或 localhost:3000/users/1/usymptoms/new 时,一切都很好。一旦我完成了有关症状/新的表格的填写,我就会将 usymptoms 控制器重定向到 @users。这很好用。

在模型文件中,关联的是users有很多usymptoms,usymptoms属于user。

但是,现在我的静态页面无法访问。例如,当我导航到 /learn 时,我收到以下错误:

没有路由匹配 {:action=>"new", :controller=>"usymptoms", :user_id=>nil}

我是 Rails 新手。你能帮我找出错误吗?

我在下面提供了我的路由文件和“rake routes”的输出。

我的 routes.rb 文件

root to: 'static_pages#home'
match '/about',   to: 'static_pages#about'
match '/contact', to: 'static_pages#contact'
match '/learn',   to: 'static_pages#learn'

match '/signup',  to: 'users#new'
match '/signin',  to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete

resources :users do
  resources :usymptoms
end


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

======

rake 路由的输出

              root        /                                            static_pages#home
             about        /about(.:format)                             static_pages#about
           contact        /contact(.:format)                           static_pages#contact
             learn        /learn(.:format)                             static_pages#learn
            signup        /signup(.:format)                            users#new
            signin        /signin(.:format)                            sessions#new
           signout DELETE /signout(.:format)                           sessions#destroy
    user_usymptoms GET    /users/:user_id/usymptoms(.:format)          usymptoms#index
                   POST   /users/:user_id/usymptoms(.:format)          usymptoms#create
 new_user_usymptom GET    /users/:user_id/usymptoms/new(.:format)      usymptoms#new
edit_user_usymptom GET    /users/:user_id/usymptoms/:id/edit(.:format) usymptoms#edit
     user_usymptom GET    /users/:user_id/usymptoms/:id(.:format)      usymptoms#show
                   PUT    /users/:user_id/usymptoms/:id(.:format)      usymptoms#update
                   DELETE /users/:user_id/usymptoms/:id(.:format)      usymptoms#destroy
             users GET    /users(.:format)                             users#index
                   POST   /users(.:format)                             users#create
          new_user GET    /users/new(.:format)                         users#new
         edit_user GET    /users/:id/edit(.:format)                    users#edit
              user GET    /users/:id(.:format)                         users#show
                   PUT    /users/:id(.:format)                         users#update
                   DELETE /users/:id(.:format)                         users#destroy
          sessions POST   /sessions(.:format)                          sessions#create
       new_session GET    /sessions/new(.:format)                      sessions#new
           session DELETE /sessions/:id(.:format)                      sessions#destroy

【问题讨论】:

  • 在添加症状之前 /learn(或其他静态页面)是否有效?您在应用程序布局(或其他共享)中有指向 new_user_usymptom 的链接吗?
  • 请发布您的控制器代码。

标签: ruby-on-rails


【解决方案1】:

您必须在某处拥有以下链接:new_user_usymptom_path(@user),但由于某种原因,@usernil,因此出现错误。

【讨论】:

  • 我确实在部分标头中有 new_user_usymptom_path(@user)
  • 所以你需要在你的 static_pages_controller 中设置@user
猜你喜欢
  • 2018-09-07
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 2012-01-28
相关资源
最近更新 更多