Ich habe gerade eine neue App gestartet, in der ich eine Postleitzahl in einem Formular erfassen und in der Datenbank speichern möchte. Mein Problem ist, dass die Create-Aktion nicht aufgerufen wird, egal was ich versuche.Aktion erstellen, die nicht im Formular aufgerufen wird
Routen:
root 'postcodes#new'
resources :postcodes, only: [:new ,:create]
Controller: postcodes_controller.rb
class PostcodesController < ApplicationController
def new
@postcode = Postcode.new
end
def create
@postcode = Postcode.new(postcode_params)
if @postcode.save
flash[:success] = 'Success'
else
flash[:error] = 'Error'
end
end
private
def postcode_params
params.require(:postcode).permit(:code)
end
end
Modell: postcode.rb
class Postcode < ApplicationRecord
validates :code, presence: true, uniqueness: true
end
Ausblick: PLZ/new.haml
.container
%form
%fieldset.form-group
= form_for @postcode do |f|
= f.label :postcode
= f.text_field :code, placeholder: 'Example Postcode', class: 'form-control'
= f.submit 'Submit', class: 'btn btn-primary'
Ich habe versucht, mehr Optionen in der form_for
wie die Methode und Aktion und jetzt habe ich das Gefühl, es ist ein Routing-Fehler.
Jede Hilfe wird geschätzt.
Danke.
* Die Create-Aktion scheint nicht aufgerufen zu werden * Wie erzählst du? Haben Sie in Ihrer Datenbank eingecheckt, dass kein Datensatz erstellt wurde? Erhalten Sie eine Fehlermeldung? Hat Ihre create-Methode eine View, weil Sie am Ende der Methode keine Umleitung definiert haben? – spickermann
Entschuldigung, ich hätte klarer sein sollen. Wenn ich das Formular abschicke, wird nichts zur Datenbank hinzugefügt, und wenn ich ein "' raise "am Anfang der Erstellungsaktion platziere, passiert auch nichts. –
Was sagt Ihnen das Serverprotokoll? Irgendein Fehler? – Pavan