html - nil:NilClass (RoR) 的未定义方法“each”
问题描述
我正在尝试将输入的值打印到同一页面上表单正下方的表单中,并且每当我运行服务器时,我都会收到一条错误消息,提示“nil:NilClass 的未定义方法‘每个’”。当我尝试在与表单相同的页面上运行循环时出现问题,如果我在不同的路径上运行循环,则没有问题。
这是循环
<tbody>
<% @orders.each do |order| %>
<tr>
<td><%= order.drink %></td>
<td><%= order.coffee_type %></td>
<td><%= order.milk_amount %></td>
<td><%= order.sugar_amount %></td>
<td><%= link_to 'Show', order %></td>
<td><%= link_to 'Edit', edit_order_path(order) %></td>
<td><%= link_to 'Order Completed', order, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
这是我的订单控制器类
class OrdersController < ApplicationController
before_action :set_order, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, except: [:index, :show]
# GET /orders
# GET /orders.json
def index
@orders = Order.all.order("created_at DESC")
@order = Order.new
end
# GET /orders/1
# GET /orders/1.json
def show
@orders = Order.all
end
# GET /orders/new
def new
@order = current_user.orders.build
end
# GET /orders/1/edit
def edit
end
# POST /orders
# POST /orders.json
def create
@order = current_user.orders.build(order_params)
respond_to do |format|
if @order.save
format.html { redirect_to new_order_path, notice: 'Order was successfully created.' }
format.json { render :show, status: :created, location: @order }
else
format.html { render :new }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
解决方案
鉴于您正在尝试呈现Order
表单,我猜您正在执行new
oredit
操作。而且,您可以执行以下操作:
@orders = Order.all.order("created_at DESC")
在这些行动中都没有。所以,自然@orders
是nil
。因此,当您尝试调用时nil.each
,您会得到“nil:NilClass 的未定义方法 `each'”。
推荐阅读
- c# - Thread.Sleep(0) 在 .NET Core 3.1 上无法正常工作
- react-native - React Native:任何导航器都没有处理带有有效负载(blahblah)的操作“NAVIGATE”。你有一个名为“主页”的屏幕吗?
- c++ - 让 Gcc 指定哪些模板占用的时间最长
- python - 从字符串在python中创建一个列表
- android - Flutter 中的 Dialogflow 建议芯片响应?
- javascript - 一次仅扩展一个移动导航选项
- python - 优化旅行推销员算法(时间旅行者算法)
- r - 如何使用向量对数据帧列表进行子集化
- excel - 将工作表复制到 ActiveWorkbook
- python - 将校正列添加到数据框