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