2016-06-01 12 views
0

私は、私がdo do to doをするための手順に従おうとしています。私のアイテムを提出するまで、すべてがスムーズに進んでいます。私は "ArgumentError ItemsController#create、引数の数が間違っています(0の場合は1)"というエラーが出ています。それは、問題がどこにあるのかを言う私の作成メソッドの下の2行目を強調表示します。私のコントローラの私のコードはそうそうです。新しい投稿するには、私はリスト項目を行うことができません。

class UsersController < ApplicationController 
    def show 
    @user = params[:id].blank? ? current_user : User.find(params[:id]) 
    @items = @user.items 
    end 
end 

class ItemsController < ApplicationController 
def create 
    @user = User.find(params[:user_id]) 
    @items = @user.items.create(params.require[:items].permit(:name)) 
    redirect_to @user 
end 
end 

なぜ私に引数の誤りがあるのか​​分かりません。私はビデオをフォローしていて、彼らの作品は動いているので、私は困惑しています。あなたは私のデシベルの移行を確認する必要がある場合にも、私は知らないが、ここにある:誰も私を助けることができる場合

class CreateItems < ActiveRecord::Migration 
def change 
    create_table :items do |t| 
    t.string :name 
    t.references :user, index: true, foreign_key: true 

    t.timestamps null: false 
    end 
end 

エンド 私は非常に高く評価されるだろう!

+0

'@items = @ user.items.create(params.require(:item))'を '@items = @ user.items.create(params.require(:item))に変更してみてください。 .permit(:name)) ' – Pavan

+0

sooooooありがとう!私は狂ったhahaに行っていた。 –

答えて

1

と、ArgumentError私は助剤として、引数の数が間違って(1 0 )

を作成し、それがRailsのとで行くために、また

@items = @user.items.create(params.require(:item).permit(:name)) 

する必要がありますwayプライベートメソッドのように呼び出すことができます

#items_controller 

class ItemsController < ApplicationController 
    def create 
    @user = User.find(params[:user_id]) 
    @items = @user.items.create(item_params) 
    redirect_to @user 
    end 

    private 
    def item_params 
    @items = @user.items.create(params.require(:item).permit(:name)) 
    end 
end 
+1

あなたは私を救った!私はあなたが私を助けるために時間を取ったことに本当に感謝しています! –

0

あなたItemsControllercreate方法で

@items = @user.items.create(params.require(:item).permit(:name)) 

@items = @user.items.create(params.require[:items].permit(:name)) 

を交換してください。 ItemsController#で

関連する問題