2016-10-01 4 views
1

Dies ist ein mögliches Duplikat, aber ich habe fast alle Vorschläge gelesen und ausprobiert, aber ich bekomme den Fehler in der neuen Aktionsansicht. Ich bin mit Rails 5.Parameter fehlt oder der Wert ist leer: ph - rails

ich folgendes versucht:

private 
    def ph_params 
     params.require(:ph).permit(:amount) 
    end 

Und auch versucht, die folgenden, und der Fehler verschwunden, aber meine Werte wurden nicht in die Datenbank zu speichern, zeigt nur Nil:

private 
    def ph_params 
     params.permit(:amount) 
    end 

Mein Controller:

class PhsController < ApplicationController 
    def index 
    end 

    def new 
    @ph = Ph.new(ph_params) 
    end 

    def create 
    @ph = Ph.new(ph_params) 
     respond_to do |format| 
     if @ph.save 
     format.html { redirect_to @ph } 
    else 
     format.html { render "new" } 
    end 
    end 
    end 

    def show 
    @ph = Ph.find(params[:id]) 
    end 

private 
    def ph_params 
    params.require(:ph).permit(:amount) 
    end 
end 

new.html.erb Form starten

<%= simple_form_for @ph, url: phs_path do |f| %> 

Modell

class Ph < ApplicationRecord 

end 

Ich könnte etwas fehlen. Ihre Hilfe wird geschätzt, danke im Voraus.

Antwort

1

Ändern Sie bitte Ihre new Aktion

def new 
@ph = Ph.new 
end 

Der Grund sind Sie den Fehler bekommen, weil, wenn Sie die Route phs/new getroffen, kein Schlüssel ph im params Hash an die Steuerung übergeben wird, aber Sie versuchen, Zugriff auf params[:ph][:amount], was der Rückgabewert von ph_params ist. Dies ist der Grund, warum der Fehler 'param fehlt oder der Wert leer ist' auftritt.

Wenn Sie wollen wissen, welche Werte in der params für jede Anforderung vergangen waren, fügen Sie die folgende Zeile in application.html.erb

<%= params.inspect %> 

Sie werden wahrscheinlich einen Hash mit zwei Schlüsseln {"controller" => "phs", "action" => "new"} in der new Seite finden .

Wenn Sie jedoch versuchen, ein neues Objekt ph zu erstellen, finden Sie einen Schlüssel ph in Ihrem params Hash.

Übrigens, ich glaube, Sie verstehen nicht ganz strong parameters. Ich würde vorschlagen, Sie zu lesen http://api.rubyonrails.org/classes/ActionController/StrongParameters.html

+0

Wow, das war ein sehr Anfänger Fehler von meiner Seite. –

Verwandte Themen