小编mab*_*ako的帖子

Rails的资源已经'show'映射而没有ID,并创建/users.id链接而不是/ users/id

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

<%= link_to current_user.name, users_path(current_user) %>
Run Code Online (Sandbox Code Playgroud)

它产生如下链接:

<a href="/users.1">name</a>
Run Code Online (Sandbox Code Playgroud)

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

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

Request
  Parameters: 
  {"format"=>"1"}
Run Code Online (Sandbox Code Playgroud)

对于Rails来说,这样做并不是很有意义,因为它更应该如此/users/1.但是,手动尝试这个结果会产生以下结果:

Routing Error
  No route matches "/users/1"
Run Code Online (Sandbox Code Playgroud)

每手输入带有?id = param的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 => …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-routing

2
推荐指数
1
解决办法
3058
查看次数

标签 统计

rails-routing ×1

ruby-on-rails ×1