gpt4 book ai didi

ruby-on-rails - Rails model_path 路由错误,没有路由匹配 "model.2";应该是 "model/2"

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:25 27 4
gpt4 key购买 nike

我的路由路径似乎有问题。通常我应该能够做类似 <%= link_to Profile, user_path(@user||current_user) %> 的事情我继续我的一天。无论出于何种原因,我都无法理解我的 user_path不返回 /user/:id就像我期望的那样。相反,它返回 /user.:id为了对此进行测试,我使用以下代码加载了一部分。

app/view/users/_test.html.rb

<%= @user %><br>
<%= @user.id %><br>
<%= link_to user_path(@user), user_path(@user) %><br>
<%= new_user_path %><br>
<%= edit_user_path(@user) %><br>
<%= url_for(@user) %>

这返回了

本地主机:3000/测试

#<User:0x007fb6cd341f08>
1
/user.1
/users/new
/users/1/edit
/user.1

我不知道是什么导致了这种情况发生。 edit_user_path(@user)工作完美,但节目没有。我读过 Rails Routing Guide从上到下大约三遍,我无法弄清楚。我发现最接近我的问题的是 old Rails 3.1 gem problem with Devise ,但我什至没有使用 Devise gem(也许我应该使用?)。

为什么我的路线失败了?我并不是真的在寻找解决方法(尽管我想我宁愿有解决方法也不愿没有解决方法),我想了解为什么会发生这种情况并修复它。怎么回事?

我的路线非常普通,那里没有什么特别的,但以防万一出现问题而我错过了它,就在这里。

config/routes.rb

Rails.application.routes.draw do

root 'static#home'

%w( 404 406 422 500 503 ).each do |code|
get code, :to => "errors#show", :code => code
end

#USER PAGES
get '/test' => 'users#test'
get '/signup' => 'users#new'
post '/user' => 'users#create'
get '/user/list' => 'users#index'
post '/user/' => 'users#update'
get '/user/:id' => 'users#show'
get 'profile', to: 'users#show'

resources :users
end

最佳答案

我建议按如下方式更新您的路线:

config/routes.rb

Rails.application.routes.draw do

root 'static#home'

%w( 404 406 422 500 503 ).each do |code|
get code, :to => "errors#show", :code => code
end

#USER PAGES
get '/test' => 'users#test'
get 'profile', to: 'users#show', as: :user_profile

resources :users
end

...as resources :users 创建了我删除的所有路由。

重复项可能已经覆盖了默认路径,导致您看到的行为 - 如果您将对象传递给不需要参数的 url 帮助程序,您会看到您得到的行为(即 doesnt_have_an_id_path(@object) =>/doesnt_have_an_id.1).

我还在用户配置文件路径中添加了一个名称以避免这种冲突。看看这是否有效(也许一次一步来了解因果关系)——否则,尝试暂时删除配置文件路线。

关于那个路径,您可能会遇到一个问题,因为 users#show 操作需要一个 :id 参数,但该路由不允许。这可能是导致当前问题的原因,但如果不是,可能会导致后续问题。

希望能解决这个问题 - 如果您在试用后有任何问题/反馈,请大声说出来。

关于ruby-on-rails - Rails model_path 路由错误,没有路由匹配 "model.2";应该是 "model/2",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48544842/

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