Ich habe ein Projekt, das Genealogie beteiligt. Es beginnt mit Fragen an dich (aktueller Benutzer), dann die gleichen Fragen über deinen Vater, dann genau die gleichen Fragen über deine Mutter und geht weiter bis Großeltern beider Seiten.Was ist die beste Design-Praxis zum Erstellen von Tabellen aus dem gleichen Controller mit den gleichen Aktionen
Leider habe ich 3 verschiedene Ansätze und Implementierungen ausprobiert, jedes Mal korrigiere ich vergangene Fehler, da ich ziemlich neu bei Schienen bin.
Ich möchte eine Empfehlung/Anleitung von dieser Gemeinschaft bezüglich des besten Entwurfsansatzes bekommen, dem ich folgen sollte, Designprobleme zu haben.
Also denke ich, dass der beste Weg ist, mit verschiedenen Tabellen zu kommen, um später zu profitieren, wenn ich diese Informationen in einen einzigen Stammbaum stecken muss. Also, eine Tabelle für den aktuellen Benutzer, eine für den Vater, die Mutter, usw. mit einem Modell für jede Tabelle, aber mit einem einzigen Controller, weil ich genau die gleiche html.erb Form habe und jedes Mal ändert die Header die Geschwisterfrage anzupassen.
ich den Fluss und die Aktionen erfolgreich waren wie neu so erstellt, erstellen, zeigen usw., aber mein Problem ist folgendes:
Der Fluss meiner Fragen ist in Folge, und am Ende zeigt einen Stammbaum. Wenn der Benutzer auf "Weiter" klickt, werden die Daten daher in der entsprechenden Tabelle meiner Datenbank gespeichert und der Fluss wird für die nächste Tabelle fortgesetzt.
Ich stecke für mehr als 8 Stunden auf, wie die Methode ändern, die vom Vater auf die Mutter diesen Code machen erstellen:
def create
@user = User.new(user_params)
if @user.save
redirect_to :controller => 'users', :action => 'new_father'
else
render 'new'
end
end
def user_params
params.require(:user).permit(:name, :surname, :dob, :location)
end
wo Benutzer ist der Name Users_Controller und ‚new_father‘ ist eine Ansicht, in derselbe Controller (new_father.html.erb). Es gibt andere Ansichten wie current_user, new_mother usw.
So wird die erste Umleitung erfolgreich erreicht, da Daten in der Datenbank gespeichert werden (erste Umleitung = vom aktuellen Benutzer zu seinem Vater), aber dann kann ich nicht gehen
def create
@user = User.new(user_params)
if @user.save
redirect_to :controller => 'users', :action => 'new_mother'
else
render 'new'
end
end
def user_params
params.require(:user).permit(:name, :surname, :dob, :location)
end
Aber dann brauche ich mehr Controller diese oder eine andere Aktion in demselben Controller ausführen: vom Vater auf der Mutter in dem gleichen Controller und die Form bleibt in der new_father.html.erb Ansicht mit dem folgenden Code gestapelt namens create_mother. Aber ich habe alles mit nicht Erfolg versucht.
Kann mir bitte jemand (zuerst) auf die Redirect_to Methode Best Practice, vor allem, wenn ich mehr Controller mit gleichen Methoden oder den gleichen Controller mit verschiedenen Methoden, oder den gleichen Controller die gleichen Funktionen (Ich habe das versucht und ich bekomme der Fehler "mehr Umleitungen oder Renderings in einer einzigen Funktion") und zweitens, wenn das beste Design für diese spezielle Situation zu folgen, wo ich genau die gleichen Felder und Aktionen, aber in verschiedenen Tabellen mit unterschiedlichen Umleitungen jedes Mal benötigen.
Meine Strecken sind:
Rails.application.routes.draw do
# The first page providing information about the current user (novice genealogist).
get 'users/new'
# The rest of the pages asking information to form the tree.
get 'fathers/new_father'
get 'mothers/new_mother'
# TODO
# get 'users/new_grandfather_m'
# get 'users/new_grandmother_m'
# The input windows that the user lands on need to create a new record in the database.
get '/signup', to: 'users#new'
get '/new_father', to: 'fathers#new_father'
get '/new_mother', to: 'mothers#new_mother'
# TODO
# get '/new_grandfather_m', to: 'users#new'
# get '/new_grandfather_m', to: 'users#new'
# This page will serve as the tree showing information from the above input.
get '/tree' , to: 'users#show'
# Used to update the database by creating records with the above info.
post '/signup', to: 'users#create'
post '/new_father', to: 'fathers#create_father'
post '/new_mother', to: 'mothers#create_mother'
# TODO
# post '/new_grandfather_m', to: 'users#create'
# post '/new_grandmother_m', to: 'users#create'
# The database of our system.
resources :users
# The homepage.
root 'users#new'
end
Die anderen Aktionen sind: (im Grunde hatte ich für jede Relation neuen Controller gemacht)
class FatherController < ApplicationController
# Creates a new instance of the user object (not a record).
def new_father
@father = User.new
end
# Creates a new record in the database by filling the fields of the new object instance
# with data.
def create_father
@father = User.new(father_params)
if @father.save
#redirect_to @user
redirect_to :controller => 'mothers', :action => 'new_mother'
else
render 'new_father'
end
end
# A private method to pass the parameters in the new object instance.
private
def father_params
params.require(:user).permit(:name, :surname, :dob, :location)
end
# Extracts information from the database.
def show_father
@father = User.find(params[:id])
end
end
- HINWEIS:
I don Ich brauche keine Beziehungen usw., das Wichtigste ist, einen wirklich einfachen Baum zu finden, der das zeigt e Daten des Benutzers und Schienen lernen daher Beziehungen eins zu eins, eins zu vielen, viele zu vielen sind nicht wichtig.
Vielen Dank im Voraus.
Bitte fügen Sie Ihrer Frage den 'new_mother' und' new_father' Aktionscode hinzu. –
Bitte fügen Sie auch Ihre Routen hinzu. –
Vielen Dank für Ihre Antwort. Ich habe die Frage mit dem von Ihnen angeforderten Code aktualisiert, aber es ist nicht wichtig, Relationen einzubeziehen, da dies eine einfache App ist und das Hauptziel die endgültige Ansicht ist, wo es einen einfachen Baum gibt. –