2016-06-01 11 views
0

Ich habe versucht, die Schritte zu folgen, um meine zu erhalten tun, um eine Liste zu tun machen. Alles lief reibungslos, bis ich meinen Artikel absende. Ich erhalte eine Fehlermeldung, dass „Argument in ItemsController #, falsche Anzahl von Argumenten (0 1) zu schaffen“. Es hebt die zweite Zeile unter meiner create-Methode hervor, die besagt, wo das Problem liegt. Mein Code in meinen Controllern sieht so aus.Ich kann meinen neuen Aufgabeneintrag nicht posten.

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 

Ich bin mir nicht sicher, warum es mir einen Argumentfehler gibt. Ich habe ein Video verfolgt, und ihre arbeiten, also bin ich ratlos. Auch weiß ich nicht, wenn Sie brauchen, um meine db Migrate zu sehen, aber hier ist es:

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 

Ende Wenn jemand mir helfen könnte heraus, dass ich sehr geschätzt werden würde!

+0

Versuchen '@items = @ user.items.create Wechsel (params.require [: Artikel] .permit (: name))' auf '@items = @ user.items.create (params.require (: Artikel) .permit (: name)) ' – Pavan

+0

Dank soooooo viel !!! Ich wurde verrückt, haha. –

Antwort

1

Argument in ItemsController # erstellen, falsche Anzahl von Argumenten (0 für 1)

Wie ich helfen, sollte es

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

Auch gehen, indem sie mit Rails Weg, können Sie es durch eine private Methode wie unter

anrufen
#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

Du hast mich gerettet! Ich bin wirklich dankbar, dass du dir die Zeit genommen hast, mir zu helfen! –

0

ersetzen

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

mit

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

in Ihrem ItemsControllercreate Methode.

Verwandte Themen