Ruby on Rails: 引数の数が間違っています (0 を指定すると 1 が期待されます)

Justinedps26

自分のadd_itemやり方に問題があり、その理由を理解するのに苦労しています。

ここに私の carts_controller.rb

class CartsController < ApplicationController
  def index
    @cart_items = CartItem.all
  end

  def add_item
    @cart_item = CartItem.new
    produit_id = params[:produit_id]
    @cart_item = CartItem.find_or_create_by(params[:produit][:produit_id])
    @cart_item.save

    binding.pry
  end
end

ここにあるproduits/index.html.erb(問題の出所)

<div id="produits-column-container">
  <% if @produits %>
    <% @produits.in_groups_of(4, false).each do |g| %>
      <% g.each do |produit| %>
      <div id="produits-row-container">
        <div id="fiche-produit-container">
            <div id="produit-img">
              <%= image_tag produit.photo %>
            </div>
            <div id="produit-nom">
              <%= produit.nom %>
            </div>
            <div id="produit-prix">
              <%= number_to_currency(produit.prix, unit: '€', format: "%n%u") %>
            </div>
            <div id="produit-au-panier">
              <%= image_tag('icon/icon-panier') %>
              <%= link_to 'Ajouter au panier', carts_add_item_path, method: :post %>
            </div>
         </div>
       </div>
      <% end %>
    <% end %>
  <% end %>
</div>

私が与えられたエラーは次のとおりです。

ArgumentError in CartsController#add_item
wrong number of arguments (given 0, expected 1)

in def add_item(produit_id)

add_item(produit_id) に関係している carts_add_item_path

ルートも示します。

Rails.application.routes.draw do

  match "/mon-panier" => 'carts#index', via: :get

  post 'carts/add_item' => 'carts#add_item'

  resources :categories do
    resources :produits
  end

  resources :order_abonnements, only: [:create, :update, :delete]

  get 'livraisons_type/index'

  match "/recapitulatif" => 'recapitulatif#index', via: :get

  match "/confirmation-carte-cadeau" => 'recapitulatif#confirmation', via: :get

  match "/livraison-carte-cadeau" => 'livraison_carte#index', via: :get

  match '/activation-carte' => 'code_carte_cadeau#index', via: :get

  match "/offrir-une-box-bretonne" => 'cadeau#index', via: :get

  resources :order_items, only: [:create, :update, :destroy]

  match "/nos-box" => 'nos_box#index', via: :get

  get 'categories/index'

  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)

  match '/informations-penn-ar-box' => 'informations_penn_ar_box#index', via: :get

  match '/livraison-box-bretonne' => 'livraison_box_bretonne#index', via: :get

  match '/abonnements' => 'abonnements#index', via: :get

  devise_for :users, path: '', path_names: { sign_in: 'connexion', sign_out: 'déconnexion'}

  resources :users do
    delete 'déconnexion' => 'devise/sessions#destroy'
  end

  match '/mon-marche-breton' => 'marche_breton#index', via: :get

  root 'home#home'
end

そしてログ:

Started POST "/carts/add_item" for ::1 at 2017-05-30 09:48:52 +0200
Processing by CartsController#add_item as HTML
  Parameters: {"authenticity_token"=>"QrToQUHVxjuV5cUvZYHd7tj457htfZohOkmsvNDnKv79P413xjsSfR/8RVXtdIU7/wcmhcxjkU85N13CqJkG2w=="}
  Cart Load (0.3ms)  SELECT  `carts`.* FROM `carts` WHERE `carts`.`id` = 1 LIMIT 1
Completed 500 Internal Server Error in 27ms (ActiveRecord: 14.9ms)

ArgumentError (wrong number of arguments (given 0, expected 1)):
  app/controllers/carts_controller.rb:6:in `add_item'
SteveTurczyn

パラメータとして produit_id を渡す必要があります。

したがって、この行を次のように変更します...

<%= link_to 'Ajouter au panier', 
            carts_add_item_path(produit_id: produit.id), method: :post %>

そして、コントローラーのメソッドを次のように変更します...

def add_item
  produit_id = params[:produit_id]
  ...

そして、find_or_create を次のように変更します。

@cart_item = CartItem.find_or_create_by(produit_id: produit_id)

これは、アプリケーション全体で製品を指す CartItem を 1 つしか持てないことを意味します...奇妙なデザイン。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ArgumentError:引数の数が間違っています(0が与えられ、1が期待されます)Ruby

分類Dev

Rails:引数の数が間違っています(1が与えられ、0が期待されます)

分類Dev

Rails:引数の数が間違っています(1が与えられ、0が期待されます)

分類Dev

引数の数が間違っています (与えられた 0、1 が期待されます) - Ruby

分類Dev

Ruby on RailsとMongomapper:引数の数が間違っています(2対1)

分類Dev

Rails:引数の数が間違っています(1の場合は0)

分類Dev

Rails:引数の数が間違っています(0の場合は1)

分類Dev

Ruby on Rails:提供されていても引数の数が間違っている(1の場合は0)

分類Dev

Active Record Destroy ArgumentError(引数の数が間違っています(指定された1、期待される0)):

分類Dev

Ruby:エラー:正しい数の引数を指定すると、間違った数の引数(1が指定され、0が必要)

分類Dev

sendメソッドrailsの0に対する引数1の数が間違っています

分類Dev

puppet rubyの引数の数が間違っています(0の場合は1)

分類Dev

Rails 5の引数の数が間違っています(2、期待1)

分類Dev

Rails:.newの引数の数が間違っています(0の場合は1)

分類Dev

Rails form_for Error-引数の数が間違っています(1の場合は0)

分類Dev

devise_token_auth:RegistrationsController#create中に引数の数が間違っています(0が指定され、1が期待されます)

分類Dev

Railsの検索クエリで「引数の数が間違っています(1が指定され、0が必要です)」というエラーが表示されるのはなぜですか?

分類Dev

Railsでincludes()とwhere()を使用する場合のArgumentError(引数の数が間違っています(1、期待される2))

分類Dev

ransackスコープ内の引数の数が間違っています(0が与えられ、1が期待されます)

分類Dev

fastlaneスクリプトでの引数の数が間違っています(0が与えられ、1が期待されます)(ArgumentError)

分類Dev

RSpecテストコントローラーにArgumentErrorがあります:引数の数が間違っています(2、期待される0)Rails 4.2.8

分類Dev

引数の数が間違っています(1の場合は0)

分類Dev

引数の数が間違っています(0の場合は1)(Social Gem)

分類Dev

`name ':引数の数が間違っています(0の場合は1)(ArgumentError)

分類Dev

Rails ActiveCampaign gem-引数の数が間違っています(2対1)

分類Dev

Rails ActiveCampaign gem-引数の数が間違っています(2対1)

分類Dev

Javaリフレクション-引数の数が間違っています。期待される0、1を得た

分類Dev

Rspec 3.6、Rails 5エラー: `post`リクエストの引数の数が間違っています(2、期待される1)

分類Dev

型引数の数が間違っています:1が必要ですが、0が見つかりました

Related 関連記事

  1. 1

    ArgumentError:引数の数が間違っています(0が与えられ、1が期待されます)Ruby

  2. 2

    Rails:引数の数が間違っています(1が与えられ、0が期待されます)

  3. 3

    Rails:引数の数が間違っています(1が与えられ、0が期待されます)

  4. 4

    引数の数が間違っています (与えられた 0、1 が期待されます) - Ruby

  5. 5

    Ruby on RailsとMongomapper:引数の数が間違っています(2対1)

  6. 6

    Rails:引数の数が間違っています(1の場合は0)

  7. 7

    Rails:引数の数が間違っています(0の場合は1)

  8. 8

    Ruby on Rails:提供されていても引数の数が間違っている(1の場合は0)

  9. 9

    Active Record Destroy ArgumentError(引数の数が間違っています(指定された1、期待される0)):

  10. 10

    Ruby:エラー:正しい数の引数を指定すると、間違った数の引数(1が指定され、0が必要)

  11. 11

    sendメソッドrailsの0に対する引数1の数が間違っています

  12. 12

    puppet rubyの引数の数が間違っています(0の場合は1)

  13. 13

    Rails 5の引数の数が間違っています(2、期待1)

  14. 14

    Rails:.newの引数の数が間違っています(0の場合は1)

  15. 15

    Rails form_for Error-引数の数が間違っています(1の場合は0)

  16. 16

    devise_token_auth:RegistrationsController#create中に引数の数が間違っています(0が指定され、1が期待されます)

  17. 17

    Railsの検索クエリで「引数の数が間違っています(1が指定され、0が必要です)」というエラーが表示されるのはなぜですか?

  18. 18

    Railsでincludes()とwhere()を使用する場合のArgumentError(引数の数が間違っています(1、期待される2))

  19. 19

    ransackスコープ内の引数の数が間違っています(0が与えられ、1が期待されます)

  20. 20

    fastlaneスクリプトでの引数の数が間違っています(0が与えられ、1が期待されます)(ArgumentError)

  21. 21

    RSpecテストコントローラーにArgumentErrorがあります:引数の数が間違っています(2、期待される0)Rails 4.2.8

  22. 22

    引数の数が間違っています(1の場合は0)

  23. 23

    引数の数が間違っています(0の場合は1)(Social Gem)

  24. 24

    `name ':引数の数が間違っています(0の場合は1)(ArgumentError)

  25. 25

    Rails ActiveCampaign gem-引数の数が間違っています(2対1)

  26. 26

    Rails ActiveCampaign gem-引数の数が間違っています(2対1)

  27. 27

    Javaリフレクション-引数の数が間違っています。期待される0、1を得た

  28. 28

    Rspec 3.6、Rails 5エラー: `post`リクエストの引数の数が間違っています(2、期待される1)

  29. 29

    型引数の数が間違っています:1が必要ですが、0が見つかりました

ホットタグ

アーカイブ