-1

Ich versuche, eine Form zu machen, wo ein Benutzer senden normalerweise mit ihren Benutzernamen wie diese welken kann -> normaleAnsicht ändern basierend auf Option in select_tag in Schienen ausgewählt

=form_for @confession , html: {multipart: true} do |f| 
    =f.label :Confess 
    =f.text_area :confession , require: true 
    =f.file_field :confessionimage 
    =f.select (:id,options_for_select(ID)) 
    =f.submit 'Confess' 

oder Anonymously, wo ihre Namen versteckt werden und niemand wird wissen, wer diesen Beitrag geposted hat. Dafür habe ich gedacht, dass ich einen Benutzer namens anonymous in der Datenbank anlegen werde und wenn ein Benutzer anonymous in select_form beim Posten wählt, wird er als anonymer Benutzer gepostet.

dafür in meinem Controller möchte ich etwas wie das und Hauptpunkt, den ich nicht verstehen kann, wie kann der Controller wissen, welcher Benutzer ausgewählt hat?

das ist mein Controller

def index 
     @amitian = Amitian.where(institute: current_amitian.institute) if     amitian_signed_in? 
     @confessions = Confession.where(amitian_id: @amitian.ids).order('created_at DESC') if amitian_signed_in? 
     @confession = current_amitian.confessions.build 
     @anonymous = Amitian.where(email: [email protected]) 
     # (if anonymous selected) 
     do @anonymous.confessions.build 
    end 
+0

Formulardaten werden in Params Hash zur Verfügung –

+0

können Sie erklären, in Antwort mit Code-Snippet –

+0

Ich hoffe, Ihre tatsächliche Einrückung ist viel geordneter als was hier ist, weil dies überall ist. Sauberer Code ist lesbarer Code und lesbarer Code erleichtert das Auffinden von Fehlern. – tadman

Antwort

0

diese zuzugreifen: id params Sie verwenden confession_params[:id] oder params[:confession][:id] Wenn Sie bedingt unterschiedliche Ansichten laden möchten Sie einen respond_to Block wie diese verwenden:

if confession_params[:id] == 1 #or params[:confession][:id] == 1 
    loaded_view = :foo 
else 
    loaded_view = :bar 
end 

respond_to do |format| 
    format.html { render loaded_view } 
end 

Dies würde laden foo.html.erb oder bar.html.erb, basierend auf Ihnen @confession:id Parameter, an Ihrem ausgewählten aufübergebenTag, das die Parameternamen basierend auf dem Variablenmodell Ihrer Ansicht lädt.

+0

von [: ID] Sie meinen [: Geständnis] [: PostID] ie [: Tabellenname] [: Attribut] Ryt? –

+0

Ich versuchte dies in meinem Code @ anonymous.each do | a | \t @ debug = a wenn params [: Geständnis] [: postid] == 'Anonymous' @ Geständnis = a.confessions.build sonst \t @ Geständnis = current_amitian.confessions.build und habe den Fehler = undefinierte Methode '[]' für nil: Nillclass –

+0

Sie verwenden dann Nicht-Standard-Parameter. Versuchen Sie, die Protokolle der Anfrage zu lesen, es wird die mit den Kennungen gesendeten Parameter ausdrucken. – ErvalhouS

Verwandte Themen