Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法';id';对于nil:NilClass,RubyonRails_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 未定义的方法';id';对于nil:NilClass,RubyonRails

Ruby on rails 未定义的方法';id';对于nil:NilClass,RubyonRails,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我一直在犯这个错误,我不知道为什么 这是我现在的用户控制器: def show @user = User.find_by(id: params[:id]) end 我试过了什么 @user = User.find_by_id(params[:id]) @user = User.find(params[:id]) 以及我当前的HTML: <li><%= link_to "Profile", user_path(@user, show) %></li&g

我一直在犯这个错误,我不知道为什么

这是我现在的用户控制器:

def show
    @user = User.find_by(id: params[:id])
end
我试过了什么

@user = User.find_by_id(params[:id])

@user  = User.find(params[:id])
以及我当前的HTML:

<li><%= link_to "Profile", user_path(@user, show) %></li>
  • 我试过的是:

    <li><%= link_to "Profile", user_path(@user) %></li>
    
    <li><%= link_to "Profile", user_path(@user.id) %></li>
    
    <li><%= link_to "Profile", "/users/#{@user.id}" %></li>
    
    <li><%= link_to "Profile", user_path %></li>
    
    <li><%= link_to "Profile", user_show_path %></li>
    
  • 谢谢你的帮助。谢谢

    rake路由

    请记住:
    find\u by
    可以返回nil。所以你必须在使用前检查一下

    def show
        @user = User.find_by(id: params[:id])
        unless @user
          render status: 404, nothing: true
        end
    end
    

    我想这是你的案子
    find_by
    只返回nil

    您需要提供更多详细信息。我们需要确保您尝试访问的用户实际上存在一个视图(用户)。您可以通过以下方式进行检查:

    $ rails console --sandbox
    Loading development environment in sandbox (Rails 4.2.1)
    Any modifications you make will be rolled back on exit
    2.2.3 :001 > User.all.count
       (12.5ms)  SELECT COUNT(*) FROM "users"
     => 2
    2.2.3 :002 > id = User.first.id
      User Load (1.2ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" ASC LIMIT 1
     => 3
    2.2.3 :003 > app.user_path(id: id)
     => "/users/3"
    2.2.3 :004 >
    

    确保
    User.all.count
    返回一个大于0的数字。如果是0,则没有用户,您需要创建一个。

    好的,这里有一个问题,我知道你已经使用了gem,你正试图在
    用户上执行
    CRUD
    ,所以设计默认的路由来帮助用户会话控制登录和注销是覆盖传统
    用户的行为。

    请参考
    或者请参考前面的帖子

    我希望大家都明白疑惑
    干杯

    我需要添加
    用户路径(当前用户)
    而不是试图获取id。谢谢大家

    请你做一下应用程序的
    rake routes
    和post
    routes
    ,好吗,这会更清楚then@chanakyadevraj我发布了一张路线图片请检查控制器的名称及其文件名控制器名称必须是
    userscoontroller
    ,文件名称应是
    users\u controller.rb
    不要发布路线图片;张贴路线:(编辑为仅包括我们真正关心的用户。并包括
    routes.rb
    文件的部分。如果每次尝试都失败,则首先尝试通过
    rails c
    和fire
    用户在rails控制台中查找
    用户。所有
    并找到用户记录,如果有,猜测可能没有
    我们er
    根据建议的身份,
    用户
    参数[:id]
    肯定是
    nil
    Hmm,现在它说“没有路由匹配{:action=>“show”,:controller=>“users”,:id=>nil}缺少所需的键:[:id]”在这一行:
  • 并且当我将其更改为
    用户路径(@User.id)
    上面说是零again@kdl所以你的用户是零?我已经这样做了,有一个用户,我甚至可以去“用户/1”,它会带我到显示页面。谢谢你!这帮了我很多忙。我不得不添加
    用户路径(当前用户)
    哪个设计给你而不是试图获取id。很高兴它帮了你!干杯:)