gpt4 book ai didi

ruby-on-rails - Ruby on Rails 中的路由冲突

转载 作者:行者123 更新时间:2023-12-04 01:39:34 26 4
gpt4 key购买 nike

我正在与 Devise gem 一起工作我创建了一个 show用户页面。我的想法是制作一条简单的路径,如 www.website.com/:id我配置如下:

  devise_for :users, path: '', path_names: {sing_in: "login", sing_out: 
"signout", sing_up: "signup", edit: "edit"},
:controllers => {:registrations => :registrations }
resources :users, only: [:show]
get '/:id' => 'users#show', as: :profile

我的路线工作正常,但除此之外 show页面,我在 static controller 下有页面例如 about页。我希望能够像 www.website.com/about 一样访问它,这是我如何定义我的 static routes :
get '/about', to: 'static#about'

现在,如果我尝试重定向到 about page ,我收到一个错误:
ActiveRecord::RecordNotFound in UsersController#show
Couldn't find User with 'id'=about

这是我的 users_controller.rb :
class UsersController < ApplicationController

def show
@user = User.find_by_id(params[:id])
@services = @user.services
end

...
end

我试图搜索类似的错误,但没有找到类似的错误。有人可以告诉我我做错了什么吗?

感谢您的帮助和时间。

最佳答案

这里有两件事:

  • 路由不知道参数类型
  • 路由从上到下匹配

  • 在这种情况下,我怀疑您的单级路由正在定义您的 get '/:id'路线。因此,该路由正在捕获所有 /anything 的请求。因为路由器认为 anything是一个参数。

    只需将您的路线定义移动到任何其他以下 /about etc 路由,以便它们首先匹配。

    像这样:
    get '/about', to: 'static#about'
    get '/:id' => 'users#show', as: :profile

    关于ruby-on-rails - Ruby on Rails 中的路由冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47794272/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com