【发布时间】:2014-04-12 21:25:55
【问题描述】:
我已经收到这个错误几天了,我完全被阻止了。我尝试重做模型(我正在遵循 rails 起始指南),但没有得到任何结果。
表单中的第一个参数不能包含 nil 或为空
我将 time_delta 作为股票的嵌套类,我试图创建一个表单来查看和创建股票节目的新 time_deltas,但我不断收到上述错误。
这是我的 time_delta 控制器:
class TimeDeltasController < ApplicationController
def new
@stock = Stock.find(params[:stock_id])
@time_delta = @stock.time_deltas.build
respond_with(@time_delta)
end
def create
@stock = Stock.find(params[:stock_id])
@time_delta = @stock.time_deltas.build(params[:stock])
@time_delta.save
end
end
这是我对特定股票的看法
<h1> Stock </h1>
<table>
<tr>
<th>Stock</th>
<th>Hashtag</th>
</tr>
<tr>
<td><%= @stock.name %></td>
<td><%= @stock.hashtag %></td>
</tr>
</table>
<h2>Deltas: </h2>
<table>
<tr>
<th>Stock</th>
<th>Hashtag</th>
</tr>
<% @stock.deltas.each do |delta| %>
<tr>
<td><%= @delta.start %></td>
<td><%= @delta.length %></td>
</tr>
<% end %>
</table>
<h2>Add a TimeDelta:</h2>
<%= form_for([@stock,@time_delta]) do |f| %>
<p>
<%= f.label :start %><br>
<%= f.text_field :start %>
</p>
<p>
<%= f.label :length %><br>
<%= f.text_area :length %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
<%= link_to 'Back', stocks_path%>
<%= link_to 'Edit', edit_stock_path(@stock)%>
这是我在 routes.rb 中添加路线的方式:
resources :stocks do
resources :time_deltas
end
任何信息将不胜感激,我真的被困住了。
编辑:库存控制器的东西
def show
@time_delta = @stock.time_deltas.build
@stock = find_stock
end
private
def find_stock
return Stock.find(params[:id])
end
【问题讨论】:
-
您还需要在
new操作中定义@stock和@time_delta。 -
@Vee 已修复,但仍然出现相同的错误
-
Stock.find(params[:stock_id])中的new操作是否成功?您的路线设置如何? -
假设视图代码用于显示您的 Stock 控制器的操作,您应该在那里创建 @time_delta。
-
@vee 当你说路线时,你指的是哪条具体路线? Donatats Stundys - 这是我的 time_delta 控制器的代码
标签: ruby-on-rails ruby model nested null