nil:NilClass 的未定义方法“id”错误

error of undefined method `id' for nil:NilClass

我是 rails 的新手,我有这个 no method error

show.html.erb

<h1>Profile Page for <%= @item.id %></h1>
<p><%= @item.content %></p>

items_controller.rb

class ItemsController < ApplicationController
    def new
        @item = Item.new
    end

    def create
        item = Item.new(item_Params)
        if item.save
            redirect_to user_path(item.user)
        else
            render 'new'
        end
    end

private

def item_Params
    params.require(:item).permit(:user_id, :content)
end
end

我想为 items/:id 创建一个展示页面,我希望能够通过他们的 ID 查看每个项目,我应该如何创建它?

this is my show page

显示哪个资源的页面?是 /users/:id(因为您要重定向到它)还是 items/:id?无论如何,你需要在相应控制器的show action中定义@item。如果您添加有关相应控制器和用户项关联的更多信息,我可以帮助您

更新:

只需添加到 ItemsController

def show
  @item = Item.find(params[:id])
end

确保 routes.rb 中有一行 resources :items

我认为您需要阅读 guides

中有关 rails 控制器的更多信息

顺便说一句:ruby 中的惯例是使用 snake_case 进行方法命名。应该是 'item_params',而不是 'item_Params'

您需要添加用于显示页面的显示操作,并找到与其 Id 对应的项目。所以你只需在你的控制器中写下下面的动作。

def show
 @item = Item.find(params[:id])
end

您可以使用 find 方法在您的项目模型中找到您的项目。