Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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的用户;ActiveRecord错误和编辑问题_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails &引用;找不到没有ID的用户;ActiveRecord错误和编辑问题

Ruby on rails &引用;找不到没有ID的用户;ActiveRecord错误和编辑问题,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,因此,我的rails应用程序遇到了一些问题,我想我有点超出了自己的深度。我正在创建一个简单的校友应用程序,我希望用户能够加入组织。由于某种原因,在我的新加入页面中,我得到了一个错误“找不到没有ID的用户”。我想知道为什么ID没有传入,这意味着已登录?=错误的我不知道为什么在我为我的用户控制器创建其他添加项时,一切都正常,但在这里它拒绝接受登录的用户id。我觉得我缺少了一些简单的东西,如果需要更新,请告诉我 以下是我的用户控制器中的相关信息: class UsersController <

因此,我的rails应用程序遇到了一些问题,我想我有点超出了自己的深度。我正在创建一个简单的校友应用程序,我希望用户能够加入组织。由于某种原因,在我的新加入页面中,我得到了一个错误“找不到没有ID的用户”。我想知道为什么ID没有传入,这意味着已登录?=错误的我不知道为什么在我为我的用户控制器创建其他添加项时,一切都正常,但在这里它拒绝接受登录的用户id。我觉得我缺少了一些简单的东西,如果需要更新,请告诉我

以下是我的用户控制器中的相关信息:

class UsersController < ApplicationController
before_action :signed_in_user, only: [:edit, :update, :index, :show, :join]
before_action :correct_user,   only: [:edit, :update, :join]
before_action :admin_user,     only: :destroy

def join
end

def show
   @user = User.find(params[:id])
   @organization = @user.organization
end

def create
   @user = User.new(user_params)
   if @user.save
       sign_in @user
       flash[:success] = "Welcome to the Sample App!"
       redirect_to @user
  else
      render 'new'
  end
end
...
      private

def user_params
    params.require(:user).permit(:name,:email, :password, :password_confirmation,:organization_id)
end


def signed_in_user
  unless signed_in?
    store_location
    redirect_to signin_url, notice: "Please sign in."
  end
end

def correct_user
  @user = User.find(params[:id])
  redirect_to(root_url) unless current_user?(@user)
end

def admin_user
  redirect_to(root_url) unless current_user.admin?
end
end
class UsersController

我包括def create方法,因为我尝试在登录后立即编辑它以将用户重定向到join页面,但后来我遇到了这个错误,我认为这就是问题所在,所以我将其切换回原处。我想不是。。。。注意:如果Hartl教程对我有帮助的话,我会将此应用程序的很多部分建立在Hartl教程的基础上。

如果您将其更改为:

def show
@users = User.all
@user = @users.find(params[:id])
@organization = @user.organization
end

您应该有一个成员身份控制器和模型,其中包含一个“属于”\u to:user(拥有用户和组织的多个成员身份),而不是在用户控制器中定义联接方法。控制器应负责添加/删除组织用户成员资格。您可以通过@user=user.find(:id)从该控制器获取用户信息,并且不要忘记为嵌套资源正确设置路由文件

resources :users do
    resources :memberships
end
还要注意,join方法不会为视图(@user)创建任何实例变量。看起来它正确地通过了signed_in_用户操作,但在join方法中没有实例化任何内容。

将第3行更改为:

before_action :correct_user, only: [:edit, :update]
如果“加入”的目的是创建用户,那么还不应该有用户。但是,如果“加入”的目的是获取当前用户,则应将其添加到加入方法中:

@user = current_user

你的路线文件是什么样子的?谢谢!这就是我要走的路,我觉得自己像个白痴哈哈,应该意识到这一点