在尝试访问rails中的实例时,为什么会出现recordnotfound错误?

时间:2017-05-27 04:30:08

标签: ruby-on-rails ruby

我有一个名为" userinfo"的用户配置文件控制器。以及它的相应观点。 userinfo索引是根路径。在主页(用户信息索引)中,我有一个链接,可以将您带到用户个人资料页面。当我转到主页时,它给了我这个错误:enter image description here

我的路线是:enter image description here 我的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) %>

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

好的,有多个错误而且您没有遵循rails的约定,index不适用于您使用的内容。 Index用于列出show中传递id的特定用户的所有用户和params

正如您所看到的,您的索引路径是/userinfos哪个是正确的,并且没有任何id,但您尝试使用{{1}查找user这是params[:id]因此错误。

让我们试试这个:

nil

在索引视图中

def index
  @userinfors = Userinfo.all #pagination is recommended
end

现在应该可以了。

请阅读routingaction controller,了解 rails routing 背后的 魔力 和< strong> mvc 架构..