我试图在db:migrate:reset之后启动我的服务器,突然我的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
就是一样的,这样我就可以给出两种独特的外观。 如何更正此问题,我是否正确执行此操作?
答案 0 :(得分:2)
我猜你不知道rake db:migrate:reset
做了什么。没有描述字符串,所以不要问rake
它的作用,你必须look at the source:
# 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
的{{1}}部分可能解释了为什么你到处都有db:migrate:reset
。但是,如果您的所有数据都已消失,您应该从nil
获取一个空数组,所以也许您在重置后添加了一些内容。
答案 1 :(得分:0)
很奇怪,我认为这是因为我正在使用AptanaStudio 3和git终端。我刚刚重启了所有内容,它现在开始工作,好像数据库需要时间来刷新自己。所以总的来说只需重新启动所有内容,看看它是否有效。