【发布时间】:2014-12-11 13:52:03
【问题描述】:
我正在研究 Michael Hartl 的 railstutorial。我的问题是 /user/1/edit 呈现完美,但使用 edit_user_path(current_user) 没有。
我检查了拼写错误,进行了一些搜索,found this 似乎是同一个问题,但答案没有让我的链接正常工作。现在,我正在尝试用Michael's 来区分我的代码。
如果有任何其他代码可以提供帮助,请告诉我。 感谢您花时间阅读我的问题。
rake 路由的输出:
$ bundle exec rake routes
Prefix Verb URI Pattern Controller#Action
password_resets_new GET /password_resets/new(.:format) password_resets#new
password_resets_edit GET /password_resets/edit(.:format) password_resets#edit
account_activations_edit GET /account_activations/edit(.:format) account_activations#edit
root GET / static_pages#home
help GET /help(.:format) static_pages#help
about GET /about(.:format) static_pages#about
contact GET /contact(.:format) static_pages#contact
signup GET /signup(.:format) users#new
login GET /login(.:format) sessions#new
POST /login(.:format) sessions#create
logout DELETE /logout(.:format) sessions#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
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
edit_account_activation GET /account_activations/:id/edit(.:format) account_activations#edit
password_resets POST /password_resets(.:format) password_resets#create
new_password_reset GET /password_resets/new(.:format) password_resets#new
edit_password_reset GET /password_resets/:id/edit(.:format) password_resets#edit
password_reset PATCH /password_resets/:id(.:format) password_resets#update
PUT /password_resets/:id(.:format) password_resets#update
microposts POST /microposts(.:format) microposts#create
micropost DELETE /microposts/:id(.:format) microposts#destroy
添加了相关的日志条目。
开始 GET "/edit_user_path(current_user)" for 76.186.33.24 at 2014-12-11 13:59:32 +0000
ActionController::RoutingError(没有路由匹配 [GET] "/edit_user_path(current_user)"): 网络控制台 (2.0.0.beta3) lib/action_dispatch/debug_exceptions.rb:22:in
middleware_call'call' actionpack (4.2.0.beta2) lib/action_dispatch/middleware/show_exceptions.rb:30:in
web-console (2.0.0.beta3) lib/action_dispatch/debug_exceptions.rb:13:incall' railties (4.2.0.beta2) lib/rails/rack/logger.rb:38:incall_app' railties (4.2.0.beta2) lib/rails/rack/logger.rb:20:inblock in call' activesupport (4.2.0.beta2) lib/active_support/tagged_logging.rb:68:inblock in 已标记'
activesupport (4.2.0.beta2) lib/active_support/tagged_logging.rb:26:intagged' activesupport (4.2.0.beta2) lib/active_support/tagged_logging.rb:68:intagged' railties (4.2.0.beta2) lib/rails/rack/logger.rb:20:incall' actionpack (4.2.0.beta2) lib/action_dispatch/middleware/request_id.rb:21:incall' 机架 (1.6.0.beta) lib/rack/methodoverride.rb:22:incall'call' activesupport (4.2.0.beta2) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in
rack (1.6.0.beta) lib/rack/runtime.rb:17:incall' rack (1.6.0.beta) lib/rack/lock.rb:17:incall' 动作包 (4.2.0.beta2) lib/action_dispatch/middleware/static.rb:103:incall'call' railties (4.2.0.beta2) lib/rails/engine.rb:514:in
rack (1.6.0.beta) lib/rack/sendfile.rb:113:incall' railties (4.2.0.beta2) lib/rails/application.rb:161:incall' 机架 (1.6.0.beta) lib/rack/tempfile_reaper.rb:15:incall' rack (1.6.0.beta) lib/rack/lint.rb:49:in_call' 机架 (1.6.0.beta) lib/rack/lint.rb:37:incall' rack (1.6.0.beta) lib/rack/showexceptions.rb:24:incall' 机架 (1.6.0.beta) lib/rack/commonlogger.rb:33:incall' rack (1.6.0.beta) lib/rack/chunked.rb:54:incall' 机架 (1.6.0.beta) lib/rack/content_length.rb:15:incall' rack (1.6.0.beta) lib/rack/handler/webrick.rb:89:inservice'
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:138:inservice'run'
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:94:in
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'渲染 /usr/local/rvm/gems/ruby-2.1.1@rails4/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_trace.html.erb (1.6ms) 渲染 /usr/local/rvm/gems/ruby-2.1.1@rails4/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/routing_error.html.erb 内救援/布局(37.1ms) 76.186.33.24 - - [11/Dec/2014:13:59:32 +0000] "GET /500 HTTP/1.1" 500 1477 0.0647
routes.rb
Rails.application.routes.draw do get 'password_resets/new' get 'password_resets/edit' get 'account_activations/edit' root 'static_pages#home' get 'help' => 'static_pages#help' get 'about' => 'static_pages#about' get 'contact' => 'static_pages#contact' get 'signup' => 'users#new' get 'login' => 'sessions#new' post 'login' => 'sessions#create' delete 'logout' => 'sessions#destroy' resources :users resources :account_activations, only: [:edit] resources :password_resets, only: [:new, :create, :edit, :update] resources :microposts, only: [:create, :destroy] end_header.html.erb
<header class="navbar navbar-fixed-top navbar-inverse"> <div class="container"> <%= link_to "sample app", root_path, id: "logo" %> <nav> <ul class="nav navbar-nav pull-right"> <li><%= link_to "Home", root_path %></li> <li><%= link_to "Help", help_path %></li> <% if logged_in? %> <li><%= link_to "Users", users_path %></li> <li class="dropdown"> <a href='#' class="dropdown-toggle" data-toggle="dropdown"> Account <b class="caret"></b> </a> <ul class="dropdown-menu"> <li><%= link_to "Profile", current_user %></li> <li><%= link_to "Settings", 'edit_user_path(current_user)' %></li> <li class="divider"></li> <li> <%= link_to "Log out", logout_path, method: "delete" %> </li> </ul> </li> <% else %> <li><%= link_to "Log in", login_path %></li> <% end %> </ul> </nav> </div> </header>
【问题讨论】:
-
错误是什么?还发布在控制台中运行
rake routes时返回的内容。 -
另请注意:
edit_user_path(current_user)不应像您在代码中那样在字符串中 -
@rmagnum2002 它告诉我的只是“您要查找的页面不存在。您可能输入了错误的地址或页面可能已移动。”
-
不要将路径放在字符串中,它应该是
<%= link_to "Settings", edit_user_path(current_user) %>,我没有看到任何其他可能会阻止它的问题。
标签: ruby-on-rails railstutorial.org