【问题标题】:Rails' resource has 'show' mapped without an ID and creates /users.id links instead of /users/idRails 的资源在没有 ID 的情况下进行了“显示”映射,并创建 /users.id 链接而不是 /users/id
【发布时间】:2011-06-01 18:39:06
【问题描述】:

对于我当前的路由,以下 ruby​​ on rails 代码:

<%= link_to current_user.name, users_path(current_user) %>

生成如下链接:

<a href="/users.1">name</a>

反过来,Ruby on Rails 很难理解这一点,因为它希望 1 是以下格式:

ActiveRecord::RecordNotFound in UsersController#show 
  Couldn't find User without an ID

Request
  Parameters: 
  {"format"=>"1"}

Rails 那样路由它并不完全有意义,因为它更应该是/users/1。但是,手动尝试会得到以下结果:

Routing Error
  No route matches "/users/1"

使用 ?id= 参数输入每手牌的 ID,例如 /users?id=1,可以正常工作。

问题是,我不明白 users.id 来自哪里,也不知道如何修复 - 我的路由文件看起来像

routes::Application.routes.draw do
  get "register" => "users#new", :as => "register"
  get "login" => "sessions#new", :as => "login"
  post "login" => "sessions#create", :as => "do_login"
  get "logout" => "sessions#destroy", :as => "logout"

  resource :users

  root :to => "pages#welcome"
end

除了上面提到的之外,所有操作都可以正常工作,但我想找出原因。 rake routes 如下所示:

     users POST   /users(.:format)      {:action=>"create", :controller=>"users"}
 new_users GET    /users/new(.:format)  {:action=>"new", :controller=>"users"}
edit_users GET    /users/edit(.:format) {:action=>"edit", :controller=>"users"}
           GET    /users(.:format)      {:action=>"show", :controller=>"users"}
           PUT    /users(.:format)      {:action=>"update", :controller=>"users"}
           DELETE /users(.:format)      {:action=>"destroy", :controller=>"users"}

这里的问题似乎是 users#show 似乎已经取代了 users#index,这对 /users 来说是正确的做法。由于就手头的问题而言,这几乎都是默认路由,没有自定义路由,所以我在这里一无所知。有什么想法吗?

编辑:users#show 代码很简单:

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

【问题讨论】:

    标签: ruby-on-rails rails-routing


    【解决方案1】:

    您可能希望您的路由使用resources :users,而不是resource :users

    另外,将您的link_to 更改为使用user_path 而不是users_path

    <%= link_to current_user.name, user_path(current_user) %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多