gpt4 book ai didi

ruby-on-rails - 未定义的方法 `user_path'

转载 作者:行者123 更新时间:2023-12-03 10:09:20 25 4
gpt4 key购买 nike

我正在尝试手动构建用户模型(不使用 routes.rb 文件中的“资源:用户”)。我的 routes.rb 文件如下所示:

match '/users/:id', :to => 'users#show'
match '/all_users', :to => 'users#index'

这是我在用户 Controller 中的索引方法:
def index
@title = "All users"
@users = User.paginate(:page => params[:page])
end

这是我的索引 View :
<h1>All users</h1>
<%= will_paginate %>
<ul class="users">
<% @users.each do |user| %>
<li>
<%= link_to user.email, user %>
</li>
<% end %>
</ul>
<%= will_paginate %>

当我点击 localhost:3000/all_users 时,我收到此错误消息:
undefined method `user_path'

我不明白这是从哪里来的。

编辑:

好的,我发现在 View 中将 'user' 更改为 '@user' 可以使它工作:
<%= link_to user.email, @user %>

但我真的不明白错误信息,或者“用户”和“@user”之间的真正区别。另外,点击创建的链接不会重定向到用户页面,它停留在 localhost:3000/all_users 上。

最佳答案

match '/users/:id', :to => 'users#show' 

应该
match '/users/:id', :to => 'users#show', :as => :user
:as参数告诉路由器将路由命名为什么(然后您可以将 _path_url 添加到 :as 参数中)。

此外,任何时候您直接链接到 ActiveRecord 模型(例如 link_to user.email, user ),它都会尝试转向 user进入 user_path .

关于ruby-on-rails - 未定义的方法 `user_path',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5136940/

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