我是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查看每个项目,我应该如何创建它?
答案 0 :(得分:1)
这是我的表演页面
显示哪个资源的页面?是/users/:id
(因为您正在重定向到它)还是items/:id
?无论如何,您需要在相应控制器的show动作中定义@item
。如果您添加有关相应控制器和用户项关联的更多信息,我可以为您提供帮助
更新:
只需添加到ItemsController
def show
@item = Item.find(params[:id])
end
确保在resources :items
中有一行routes.rb
。
我认为您需要在guides
中阅读有关rails控制器的更多信息。顺便说一句:红宝石中的一个约定是使用snake_case进行方法命名。应该是“ item_params”,而不是“ item_Params”
答案 1 :(得分:0)
您需要添加用于显示页面的显示操作,然后找到对应于其ID的项目。因此,您只需在控制器中编写以下操作即可。
def show
@item = Item.find(params[:id])
end
您可以使用查找方法在商品模型中找到商品。