我正在尝试按照使用基本AJAX的教程将记录添加到列表中,并且我在使用表单form_for
时遇到问题。
这是我的代码。
<%= form_for ([@product, @product.new]) do |p| %>
<p>
<%= p.label :product_part %>
<%= p.text_field :product_part%>
</p>
<p>
<%= p.submit %>
</p>
<% end %>
我得到的错误是
undefined method `new' for nil:NilClass
我理解为什么我收到错误(@products
尚未“初始化”)但我不知道如何解决这个问题(我确信这很简单)。我已经看到了一些关于将资源放入路径文件的内容,但我不确定。
答案 0 :(得分:2)
如果您要为新产品制作表单,则应该(在您的控制器中)将@product
设置为新Product
的实例:
# app/controllers/products_controller.rb
def new
@product = Product.new
end
在您看来,使用[@product, @product.new]
毫无意义。您无法在产品的实例上调用new
。目前还不清楚为什么你不是简单地使用以下内容,这是form_for
正确使用ActiveRecord模型的新实例:
form_for @product do |p|