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 方法在您的项目模型中找到您的项目。
我是 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 方法在您的项目模型中找到您的项目。