0

我正在尝试编辑我的模型,但它只会创建更多具有新给定属性的模型。

我想我对方法和路线感到困惑。

/app/controllers/products_controller.rb

class ProductsController < ApplicationController

  def new
  end

  def index
  end

  def create
    @product = Product.create(params[:products])

    redirect_to @product
  end

  def edit
    @product = Product.find(params[:id])
  end


  def show
    @product = Product.find(params[:id])
  end

  def update
    @product.update_attributes(params[:id])
    @product.save
  end

  def destroy
    @product = Product.find(params[:id])
    @product.destroy

    redirect_to "/products"
  end
end

/app/views/products/edit.html.erb

<br />
<%= form_for @product do |f| %>
    <%= f.label :title, "Title:" %>
    <%= f.text_field :title, size: 20 %>
    <br /><br />
    <%= f.submit "Update" %>
<% end %>

编辑

我更新了我的产品控制器和视图,但现在我得到一个 nil:NilClass 错误。

4

1 回答 1

3

只需使用它:

<%= form_for @product do |f| %>

如果@product是新记录,它将发布到您的create方法,如果是现有记录,它将发布到您的update方法。

您的update方法应该与此类似(您不需要调用saveupdate_attributes已经为您保存了它):

def update
  @product = Product.find(params[:id])
  @product.update_attributes(params[:product])
end
于 2013-10-08T19:48:49.717 回答