gpt4 book ai didi

ruby-on-rails - UsersController 中没有方法错误

转载 作者:行者123 更新时间:2023-12-04 06:22:12 25 4
gpt4 key购买 nike

几周前我开始在 Rails 中编码,但我不明白为什么会出现这个错误。我使用 Devise 进行登录,使用 Formtastic 进行表单登录。该应用程序一直正常工作,直到我添加了 Acts_like_tags_on 并重置了数据库。

错误信息:
用户 Controller 中没有方法错误#show

undefined method `username' for nil:NilClass

app/controllers/users_controller.rb:19:in `show'
Request

Parameters:
{"id"=>"sign_in"}

这是我在用户 Controller 中的内容:
def show
@user = User.find_by_username(params[:id])
@title = @user.username

respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
end

任何输入都会有所帮助。谢谢!

将@user = User.find_by_username(params[:id]) 编辑为:
@user = User.find_by_user(params[:id])

错误变为:
#的未定义方法`find_by_user'

用户表中确实存在用户名列。

最佳答案

这实际上是一个路由问题

问题是 devise 期望你有一条会转弯的路线:

“/users/sign_in”进入 session #new

但是您的路由文件缺少该路由,因此调度程序正在匹配:

"users/:id"路由,然后转到:
users#show with :id => 'sign_in'

(因此,当它尝试查找 ID 为“sign_in”的用户时会引发错误)

您需要阅读设计的 README 文档(如果您在本地没有它,请阅读谷歌) - 特别是描述如何将标准路由集添加到 config/routes.rb 然后做任何事情的部分。 :)

应该是在那之后。

关于ruby-on-rails - UsersController 中没有方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6419588/

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