как исправить неопределенный метод `user_id 'для nil: NilClass? - PullRequest
0 голосов
/ 12 июня 2011

Я пытаюсь запустить мой сервер после сброса db: migrate: и мой сервер SQlite3 неожиданно не запустится. Я получаю сообщение об ошибке: ActionView::Template::Error (undefined method 'user_id' for nil:NilClass), когда сервер начинает отображать мою страницу datum/index. До того, как я это сделал, в моей базе данных были реальные цены, поэтому user_id мог быть обнаружен, и все работало, но теперь, когда цены исчезли, я считаю, что это выдает эту ошибку.

Контроллеры - Datum & Price:

def index
  @prices = Price.all
end

Просмотров - datum/index & prices/index:

<h1>Prices</h1>

<table>
  <tr>
    <th>User</th>
    <th>Date</th>
    <th>Price name</th>
    <th>Price</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @prices.each do |price| %>
  <tr>
    <td><%= price.user_id %></td>
    <td><%= price.date %></td>
    <td><%= price.price_name %></td>
    <td><%= price.price %></td>
    <td><%= link_to 'Show', price %></td>
    <td><%= link_to 'Edit', edit_price_path(price) %></td>
    <td><%= link_to 'Delete', price, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Price', new_price_path %>

Я думаю, что делаю это неправильно, так как я новичок в Rails. Моя цель состояла в том, чтобы дублировать мой prices/index вид, чтобы мой datum/index был таким же, чтобы я мог затем придать оба уникальных вида. Как я могу исправить эту проблему, и я делаю это правильно?

Ответы [ 2 ]

2 голосов
/ 12 июня 2011

Я предполагаю, что вы не знаете, что делает rake db:migrate:reset. Для него нет строки описания, поэтому не спрашивайте rake, что он делает, вам нужно посмотреть на источник :

# desc 'Resets your database using your migrations for the current environment'
task :reset => ['db:drop', 'db:create', 'db:migrate']

Таким образом, rake db:migrate:reset уничтожает вашу базу данных (включая все данные, которые у вас были в ней), воссоздает ее, а затем применяет миграции, чтобы снова все обновить. Но все ваши исходные данные все еще ушли.

db:drop часть db:migrate:reset, вероятно, объясняет, почему вы получаете nil повсюду. Однако вы должны получить пустой массив из Price.all, если все ваши данные исчезли, поэтому, возможно, вы добавили что-то после сброса.

0 голосов
/ 12 июня 2011

Странно, я думаю, что это выдает эту ошибку, потому что я использовал AptanaStudio 3 с терминалом git.Я просто перезапустил все, и теперь он начал работать, как будто База данных нуждалась во времени, чтобы обновить себяИтак, в заключение просто перезапустите все и посмотрите, будет ли это работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...