我有一个名为" userinfo"的用户配置文件控制器。以及它的相应观点。 userinfo索引是根路径。在主页(用户信息索引)中,我有一个链接,可以将您带到用户个人资料页面。当我转到主页时,它给了我这个错误:
我的路线是: 我的userinfos_controller:
constructor(id) {
// make MongoDB call and store inside this variable
({ firstName: this._FirstName } = CollectionName.findOne({userId: id}));
}
我的观点是:
class UserinfosController < ApplicationController
before_action :find_userinfo, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!
def index
@userinfors = Userinfo.find(params[:id])
end
def show
@myvideo = Video.last
end
def new
@userinformation = current_user.userinfos.build
end
def create
@userinformation = current_user.userinfos.build(userinfo_params)
if @userinformation.save
redirect_to root_path
else
render 'new'
end
end
def edit
end
def update
end
def destroy
@userinformation.destroy
redirect_to userinfo_path
end
private
def userinfo_params
params.require(:userinfo).permit(:name, :email, :college, :gpa, :major)
end
def find_userinfo
@userinformation = Userinfo.find(params[:id])
end
end
我的routes.rb文件:
<%= link_to 'profile', userinfors_path(@userinfors) %>
感谢您的帮助!
答案 0 :(得分:1)
好的,有多个错误而且您没有遵循rails的约定,index
不适用于您使用的内容。
Index
用于列出show
中传递id
的特定用户的所有用户和params
。
正如您所看到的,您的索引路径是/userinfos
哪个是正确的,并且没有任何id
,但您尝试使用{{1}查找user
这是params[:id]
因此错误。
让我们试试这个:
nil
在索引视图中
def index
@userinfors = Userinfo.all #pagination is recommended
end
现在应该可以了。
请阅读routing
和action controller
,了解 rails routing 背后的 魔力 和< strong> mvc 架构..