FoodItems 中的 NoMethodError#index

NoMethodError in FoodItems#index

嗨,我今天遇到了这个错误,昨天我没有。当我尝试列出所有项目时,图像 url 为零,但当我转到 show.html 时,图像加载正常。

这里是食品指数

  <div class="food-items" id="food_items">
<% @food_items.each do |food_item| %>
  <div class="food-item">
    <div class="food-item__wrapper">
      
      <%= link_to image_tag(@food_item.image_url, class: "food-item__image"), food_item %>
        <%= render food_item %>
      <p>
        <%= link_to "Show this food item", food_item %>
      </p>
    </div>
  </div>
<% end %>

这是 show.html

的代码
  <div class="recipe">
<h2 class="recipe__title">
  <%=@food_item.name %>
</h2>
<div class="food-item__container">
    <%= image_tag(@food_item.image_url, class: "food-item__image-lg") %>
  </div>
  <%= render @food_item %>
<div>
  <%= link_to "Edit this food item", edit_food_item_path(@food_item) %> |
  <%= link_to "Back to food items", food_items_path %>
  <%= button_to "Destroy this food item", @food_item, method: :delete %>
</div>

问题是您使用了 @food_item.image_url 而不是 food_item.image_url。您混淆了全局变量和局部变量。

一个很常见的错误。另一种方法是避免在视图中使用实例变量,而是从控制器传入局部变量。但它需要更多的代码,并且是否认为这是一个值得遵循的好模式取决于您。