Я пытаюсь отобразить содержимое моей базы данных с помощью Ruby on Rails и когда я написал этот код. Он возвращает ошибку "undefined method 'each' for nil:nilclass"
. Теперь все, с чем я столкнулся с подобными проблемами, говорит о том, что проблема заключается в контроллере. Я проверил свой контроллер и, честно говоря, очень простой на данный момент и почти идентичный (в том числе Case Sensitive) один, который я использовал в учебнике (кроме имен объектов). Может быть, я просто пропустил что-то действительно очевидное.
ПОСМОТРЕТЬ
<div class="item list">
<h2>Subjects</h2>
<%= link_to("Add New item", {:action => 'new'}, :class => 'action new') %>
<table class="listing" summary="item list">
<tr class="header">
<th> </th>
<th>Item</th>
<th>Visible</th>
<th>Actions</th>
</tr>
<% @items.each do |item| %>
<tr>
<td><%= item.position %></td>
<td><%= item.name %></td>
<td class="center"><%= item.visible ? 'Yes' : 'No' %></td>
<td class="actions">
<%= link_to ("show", {:action => 'show', :id => item.id}, :class => 'action show') %>
<%= link_to ("edit", {:action => 'edit', :id => item.id}, :class => 'action edit') %>
<%= link_to ("delete", {:action => 'delete', :id => item.id}, :class => 'action delete') %>
</td>
</tr>
<% end %>
</table>
</div>
КОНТРОЛЛЕР
class ItemsController < ApplicationController
def list
@items = Item.order("items.position ASC")
end
end
ДРУГИЕ
Processing by ItemsController#stocklist as HTML
Rendered items/stocklist.html.erb within layouts/application (7.0ms)
Completed 500 internal server error in 17ms
Хорошо, так что для любого в будущем Савва поставил меня на этот вопрос.
В контроллере это был список вызовов. Теперь... он должен был назвать "запас",
class ItemsController < ApplicationController
def stocklist
@items = Item.order("items.position ASC")
end
end
Это было все, что было не так. (Маленькие вещи в жизни имеют значение...)
Я думаю, что переменная @itmes
имеет массив данных, который вы хотите получить. Попробуйте отладить и напечатать значение внутри @itmes
, puts @itmes
чуть ниже вашего кода и посмотрите, пуст ли он и используете правильное условие для получения таких данных;
Model.all(:order => 'DATE(updated_at), price')