当我尝试运行我的代码时,我收到了上面的错误。 我尝试向我的产品添加特定属性,但每次我尝试将它们添加到我的产品时,都会创建一个新的,而不是仅编辑旧的。
结果如下:
Started POST "/my_products" for 127.0.0.1 at 2016-01-03 16:33:46 +0100
[localhost] [127.0.0.1] [a6533ae8-475f-4e] Processing by MyProductsController#create as JS
[localhost] [127.0.0.1] [a6533ae8-475f-4e] Parameters: {"utf8"=>"✓", "my_product"=>{"size_name"=>"Gros oeuf", "size_img"=>"big-egg.png", "size_price"=>"40"}, "commit"=>"Choisir"}
[localhost] [127.0.0.1] [a6533ae8-475f-4e] (0.2ms) BEGIN
[localhost] [127.0.0.1] [a6533ae8-475f-4e] SQL (0.3ms) INSERT INTO `my_products` (`size_name`, `size_price`, `size_img`, `created_at`, `updated_at`) VALUES ('Gros oeuf', '40', 'big-egg.png', '2016-01-03 15:33:46', '2016-01-03 15:33:46')
[localhost] [127.0.0.1] [a6533ae8-475f-4e] (2.0ms) COMMIT
我的application_controller.rb:
def current_product
if !session[:my_product_id].nil?
MyProduct.find(session[:my_product_id])
else
MyProduct.new
end
end
我的产品_控制器:
def base
@myproduct = current_product
@size = Size.all
@chocolate = MyProductItem.where(item_category_id: 1)
end
def create
@myproduct = current_product
if @myproduct.update(my_product_params)
redirect_to(:back)
else
render 'new'
end
end
我的base.html.erb:
<% @size.each do |size| %>
<div class="Box" >
<p><%= size.name %></p>
<p><%= image_tag size.image, style: 'width:7em;height:auto;' %></p>
<p><%= number_to_currency size.price %></p>
<p><%= size.description.try(:html_safe) %></p>
<%= form_for @myproduct, remote: true do |f| %>
<%= f.hidden_field :size_name, value: size.name %>
<%= f.hidden_field :size_img, value: size.image %>
<%= f.hidden_field :size_price, value: size.price %>
<%= f.submit "Choisir", class: "addtocart", :id => "#orders" %>
<% end %>
</div>
<% end %>
我的模特:
class MyProduct < ActiveRecord::Base
attr_accessible :name, :slug, :price, :image, :my_product_item_id, :user_id, :size_name, :size_img, :size_price
has_many :elements, dependent: :destroy
has_one :size, dependent: :destroy
belongs_to :user
belongs_to :order
class Size < ActiveRecord::Base
attr_accessible :name, :price, :weight, :image, :description, :object_size
belongs_to :my_product
end
有什么想法吗?
答案 0 :(得分:1)
在表单中添加具有正确:my_product_id
值的字段:
<%= hidden_field_tag(:my_product_id, @my_product.id) if @my_product %>
如果您在没有参数的情况下使用base
请求调用GET
操作,则会创建新对象,对于更新,您必须传递给此操作参数my_product_id=value
(value
是{已更新产品的{1}}。