form_for Ruby On Rails

时间:2015-12-18 19:09:15

标签: ruby-on-rails ruby

我正在尝试按照使用基本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尚未“初始化”)但我不知道如何解决这个问题(我确信这很简单)。我已经看到了一些关于将资源放入路径文件的内容,但我不确定。

1 个答案:

答案 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|