2016-09-10 1 views
0

Mein Ziel ist es, eine neue Erinnerung Datensatz mit fest codierten Werte zu schaffen:Schienen: param.require (: Modell) Action :: ParameterMissing oder leer

In der folgenden Struktur:

Erinnerung belongs_to :deck
Deck has_one :reminder, dependent: :destroy

In Deck Controller komme ich zu der Ansicht wie folgt aus:

def repitition_alerts 
    @deck = Deck.find(params[:id]) 
    @reminder = Reminder.new 
end 

Auf dieser Seite möchte ich eine neue Erinnerung mit einem link_to erstellen:

<%= link_to "make alerts", deck_reminders_path(@deck, @reminder, {:action => :create}, next_alert: 'soon', interval: false), :method => :post %> 

Ich erhalte die folgende Fehlermeldung im Browser: ActionController::ParameterMissing in RemindersController#create

Vom Terminal-Ausgang:

ActionController::ParameterMissing (param is missing or the value is empty: reminder): 
    app/controllers/reminders_controller.rb:34:in `reminder_params' 
    app/controllers/reminders_controller.rb:19:in `create' 

In die reminders_controller.rb habe ich:

def reminder_params 
    params.require(:reminder).permit(:deck_id, :interval, :next_alert, :alerts) 
end 

Wenn ich es richtig verstehe. Schienen sehen nicht das @Reminder hineingegangen? Aber es ist in der Seite. Ich kann dies auf die gleiche Seite setzen <%= @reminder %> und ich sehe #<Reminder:0x007fc012fa00a8> auf der Seite gerendert. Also existiert das Objekt selbst.

(Rails 4,2) enter image description here

Antwort

1

Sie müssen die params für reminder unter :reminder verschachtelt. Schalten Sie Ihre link_to zu dieser:

<%= link_to "make alerts", deck_reminders_path(
     @deck, 
     @reminder, 
     {:action => :create}, 
     reminder: { 
     next_alert: 'soon', 
     interval: false 
     } 
    ), :method => :post %> 
Verwandte Themen