【问题标题】:railstutorial.org "settings" link brokenrailstutorial.org“设置”链接断开
【发布时间】: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'
web-console (2.0.0.beta3) lib/action_dispatch/debug_exceptions.rb:13:in
call' actionpack (4.2.0.beta2) lib/action_dispatch/middleware/show_exceptions.rb:30:in call' railties (4.2.0.beta2) lib/rails/rack/logger.rb:38:in call_app' railties (4.2.0.beta2) lib/rails/rack/logger.rb:20:in block 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:in tagged' activesupport (4.2.0.beta2) lib/active_support/tagged_logging.rb:68:intagged' railties (4.2.0.beta2) lib/rails/rack/logger.rb:20:in call' actionpack (4.2.0.beta2) lib/action_dispatch/middleware/request_id.rb:21:in call' 机架 (1.6.0.beta) lib/rack/methodoverride.rb:22:in call'
rack (1.6.0.beta) lib/rack/runtime.rb:17:in
call' activesupport (4.2.0.beta2) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in call' rack (1.6.0.beta) lib/rack/lock.rb:17:incall' 动作包 (4.2.0.beta2) lib/action_dispatch/middleware/static.rb:103:in call'
rack (1.6.0.beta) lib/rack/sendfile.rb:113:in
call' railties (4.2.0.beta2) lib/rails/engine.rb:514:in call' railties (4.2.0.beta2) lib/rails/application.rb:161:incall' 机架 (1.6.0.beta) lib/rack/tempfile_reaper.rb:15:in call' rack (1.6.0.beta) lib/rack/lint.rb:49:in_call' 机架 (1.6.0.beta) lib/rack/lint.rb:37:in call' rack (1.6.0.beta) lib/rack/showexceptions.rb:24:incall' 机架 (1.6.0.beta) lib/rack/commonlogger.rb:33:in call' rack (1.6.0.beta) lib/rack/chunked.rb:54:incall' 机架 (1.6.0.beta) lib/rack/content_length.rb:15:in call' 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:in service'
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:94:in
run'
/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 它告诉我的只是“您要查找的页面不存在。您可能输入了错误的地址或页面可能已移动。”
  • 不要将路径放在字符串中,它应该是&lt;%= link_to "Settings", edit_user_path(current_user) %&gt;,我没有看到任何其他可能会阻止它的问题。

标签: ruby-on-rails railstutorial.org


【解决方案1】:

这个:

<%= link_to "Settings", 'edit_user_path(current_user)' %>

应该变成这样:

<%= link_to "Settings", edit_user_path(current_user) %>

您的日志显示应用程序会查找 /edit_user_path(current_user),因为您将其作为字符串发送,并且通常您没有此路径。查看日志的第一行Started GET "/edit_user_path(current_user)"

应该是Started GET "/users/1/edit"

【讨论】:

  • 刚刚进行了更改,重置了我的 webrick,没有骰子。
  • 你能加入这个聊天吗? chat.stackoverflow.com/rooms/66663/…
  • 还要仔细检查,因为您正确设置了路线..只需仔细检查链接。
  • 似乎我没有足够的代表来聊天。
  • 知道了。我重置了我的 webrick,但没有刷新页面。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 2014-04-16
相关资源
最近更新 更多