2016-05-12 4 views
0

Ihave приложение rails, в котором я хочу обновить одно и то же поле нескольких записей одновременно. это моя форма в представленииОбновление Rails Несколько записей сразу с получением неизвестного атрибута ошибки

<tbody> 
    <%= form_tag update_cart_cart_path, method: "PUT" do |f| %> 
      <% @cart_items.each do |cart_item| %> 
      <tr class="items"> 
      <td><a class="remove" href="#"><fa class="fa fa-close"></fa></a></td> 
      <td><%= image_tag cart_item.variant.variant_photos[0].variant_image %></td> 
       <td><a class="aa-cart-title" href="#"><%= cart_item.variant.name %></a></td> 
       <td>Rs. <%= cart_item.variant.price %>/kg</td> 
       <td><%= fields_for "cart_items[#{cart_item.id}]" do |p| %> 

      <%= p.text_field 'quantity' %> 
          <% end %></td> 
      <td><input class="aa-cart-quantity product-quantity" rel="<%= cart_item.variant.price %>" type="number" value="<%= cart_item.quantity %>"></td> 
      <td>Rs. <%= (cart_item.variant.price) * (cart_item.quantity) %></td> 
       </tr> 
       <% end %> 

       <td colspan="6" class="aa-cart-view-bottom"> 
        <input type="submit" value="submit"> 
       <%#= link_to 'Update Cart', '#', :class => 'hvr-shutter-in-horizontal button' %> 

       </td> 
        </tr> 
     <% end %> 
    </tbody> 

и мой контроллер

def update_cart 
    @cart_items = CartItem.where(cart_id: params[:id]) 
    @cart_items.each do |item| 
    item.update_attributes(update_cart_params) 
    end 
end 

private 

def update_cart_params 
    params.require(:cart_items).permit! 
end 

Теперь вопрос я столкнулся, когда я пытаюсь обновить записи cart_item я получаю сообщение об ошибке unknown attribute '2' for CartItem.

это параметры, которые я получаю после отправки

Parameters: {"utf8"=>"✓", "authenticity_token"=>"5dlZZhW5UCw+dZfalPnqQmNKzkNHVLcwvt8luitOE7NojtkFDmdwwTzKi+DrFioOrpG8gcekRuQRZYYj0OKJHg==", "cart_items"=>{"2"=>{"quantity"=>"121"}, "3"=>{"quantity"=>"111"}}, "id"=>"1"} 

Пожалуйста, помогите

+0

Пожалуйста, добавьте код модели Корзина и CartItem –

+0

я просто accept_nested_attributes: cart_items в корзину модели ... корзину has_many: cart_items и cart_item принадлежит_to: cart – user4965201

ответ

3

Проблема заключается в том, что вы пытаетесь обновить каждый в корзине элементов с параметрами для всех в корзины товаров.

Вы должны попробовать следующее:

  • захватить тележку
  • Для каждого корзины предмета Params:
    • Найти телегу элемент, принадлежащий к корзине
    • Update телега элементов с соответствующие атрибуты

Псевдокод, не проверял, но вы получите идею:

def update_cart 
    @cart = Cart.find(params[:id]) 
     update_cart_params.keys.each do |cart_item_id| 
     cart_item = @cart.items.find(cart_item_id) 
     if cart_item 
      cart_item.update(update_cart_params[cart_item_id]) 
     end 
    end 
end 
+0

Это тоже была моя идея, поэтому я попросил модели. –

+0

Получение 500 внутренних ошибок сервера :( – user4965201