2017-09-26 70 views
1


我在Ruby on Rails中一些麻煩和我的方法使(產品可以被禁用)。 我創建了一些複選框,以便用戶選擇他想要設置的產品enable = true。 保持返回錯誤 「無法與 'ID' 發現產品= ENABLE」submit_tag與check_box_tag返回錯誤

我的方法enable

def enable 
    Product.update_all(["enable=?", true], :id => params[:selected_products]) 
    redirect_to root_url 
end 

routes.rb

Rails.application.routes.draw do 
    get 'product_export/new' 

    get 'product_imports/new' 

    resources :users 
    resources :product_imports 
    resources :products do 
    collection do 
     post :import 
     post :export 
     post :enable 
    end 
    end 

    root to: 'products#index' 
end 

,最後我view與表e check_box_tag:

<%= form_tag enable_products_path, :method => :put do %> 
    <%= submit_tag "Enable products" %> 
    <table class="table table-striped table-responsive" id="productsTable"> 
    <thead class="thead-inverse"> 
     <tr> 
     <th/> 
     <th>Code</th> 
     <th>Enable</th> 
     <th>Bar code</th> 
     <th>Unit cost</th> 
     <th>Description</th> 
     <th>Family</th> 
     <th>Final</th> 
     <th>Measure</th> 
     <th colspan="3"></th> 
     </tr> 
    </thead> 
    <tbody> 
     <% @products.each do |product| %> 
     <tr> 
      <td><%= check_box_tag 'selected_products[]', product.id %></td> 
      <td><%= link_to (product.code), edit_product_path(product) %></td> 
      <td><%= product.enable %></td> 
      <td><%= product.bar_code %></td> 
      <td><%= product.unit_cost %></td> 
      <td><%= product.description %></td> 
      <td><%= product.family %></td> 
      <td><%= product.final %></td> 
      <td><%= product.measure %></td> 
      <td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
     </tr> 
     <% end %> 
    </tbody> 
    </table> 
<% end %> 

感謝您的幫助!

+0

檢查什麼URL在控制檯打。我認爲這是產品/啓用權? – krishnar

+0

顯示此操作的一部分rails日誌(log/development.log)。 –

回答

0

使用where找到選定產品並在更新它們:

Product.where(id: params[:selected_products]).update_all(enable: true)