當我嘗試運行我的代碼時,我得到了上述錯誤。 我嘗試將特定屬性添加到我的產品中,但每次嘗試將它們添加到我的產品時,都會創建一個新的屬性,而不是隻編輯舊的。通過創建而不是更新來處理
下面是結果:
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
我Products_controller:
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
任何想法?
<%= hidden_field_tag(:my_product_id, @my_product.id) if @my_product %>
如果調用base
行動GET
要求不帶參數的新對象將被創建,用於更新你必須通過這個動作參數my_product_id=value
(value
是:
我的猜測是'session [:my_product_id]'不存在,您需要調試此操作,在'current_product'方法中添加一個打印以檢查會話所有的鍵值對。 – goromlagche
我做了「<%= session.inspect%>」但是有這麼多的信息,有沒有更清晰的方法? –
我認爲@Mareq回答了你的問題。 – goromlagche