Ich war süchtig danach, das Modell beim Erstellen des Portfolios zu speichern. Ich habe es mir notiert, weil es mit einem Edelstein namens "Pry-Rails" gelöst wurde.
Ich habe den folgenden Code und die folgende Methode erstellt.
records_controller.rb
class User::RecordsController < User::Base
##Unterlassung...
def create
@record = current_app_user.records.build(record_params)
if @record.save
flash[:success] = 'Erfolgreich eingegeben'
redirect_to user_root_url
else
flash.now[:danger] = 'Nicht erfolgreich eingegeben'
render :new
end
end
##Unterlassung...
private def record_params
params.require(:record).permit(
:material,
:study_date,
:study_hour,
:study_minute,
:memo,
)
end
end
Modellname: Datensatz Die Spalten sind wie folgt.
["id", :integer]
["material", :string] #Ich möchte Unterrichtsmaterialien bereitstellen
["study_date", :date] #Ich möchte ein Date setzen
["study_hour", :integer] #Ich möchte Zeit zum Lernen einplanen
["study_minute", :integer] #Ich möchte die Lernzeit (Minute) eingeben.
["memo", :string] #Ich möchte ein Memo einfügen
["app_user_id", :integer]
["created_at", :datetime]
["updated_at", :datetime]
Dem Gemfile wurde Folgendes hinzugefügt
Gemfile.
group :development, :test do
gem 'pry-rails'
end
Bundle-Installation im Terminal
$bundle install
Zur Erstellungsmethode hinzugefügt
records_controller.rb
class User::RecordsController < User::Base
##Unterlassung...
def create
binding.pry #Fügen Sie dieses hinzu! !!
@record = current_app_user.records.build(record_params)
if @record.save
##Unterlassung...
Versuchen Sie dann zu speichern. Dann geht die GUI in einen Standby-Zustand Befehlszeilenbedienung ist am Terminal möglich. Der folgende Bildschirm wird angezeigt.
From: /apps/study-meter/app/controllers/user/records_controller.rb:20 User::RecordsController#create:
19: def create
=> 20: binding.pry
21: @record = Record.new(record_params)
22: if @record.save
23: flash[:success] = 'Erfolgreich eingegeben'
24: redirect_to user_root
25: else
26: flash.now[:danger] = 'Nicht erfolgreich eingegeben'
27: render :new
28: end
29: end
[1] pry(#<User::RecordsController>)>
Geben Sie nun params ein. Dann
[1] pry(#<User::RecordsController>)> params
=> <ActionController::Parameters {"authenticity_token"=>"y5Y+hutJRPbyX9VM0lpiIax4hfeF5TXoykVL35fLQV727TmH/+/f/qncyRtDaANL1h5kqIOErcrGRhfCYuYCKg==", "record"=>{"study_date"=>"2020-07-14", "memo"=>"Japanische Geschichte", "study_hour"=>"0", "study_minute"=>"3"}, "commit"=>"Post", "host"=>"study-meter.com", "controller"=>"user/records", "action"=>"create"} permitted: false>
Wenn Sie sich das ansehen, können Sie sehen, welchen Wert Sie in welche Spalte setzen wollten. Ich habe versucht, ein Memo in die Spalte "Memo" einzufügen, und ich habe versucht, "japanische Geschichte" in die Spalte "Material" einzufügen.
Trotzdem gibt es in der Memospalte japanische Geschichte, und in der Materialspalte gibt es überhaupt keine Eingabe. Dort bemerke ich, dass es "lustig" ist.
Weil das Material eine Nicht-Null-Einschränkung hatte "Material ist nicht gut mit Null, aber was bedeutet es, zu versuchen, es als Null zu speichern?" Das Speichern hat wahrscheinlich nicht funktioniert.
・ Die Methode sollte in Ordnung sein
Von diesem Punkt an konnte ich herausfinden, dass die Art und Weise, das Ansichtsformular zu schreiben, seltsam ist. Sicher genug, der Code dort war seltsam, also habe ich ihn repariert und gelöst.
pry-rail war eine sehr nützliche Bibliothek, um die Fehlerursache zu identifizieren.
Recommended Posts