2017-06-24 5 views
0

Ich habe eine grundlegende Sinatra-App beim Absenden von Formulardetails. Ich bin diesen Fehler, vor allem, wenn auf Heroku läuftNameError - undefinierte lokale Variable oder Methode `user_details 'für # <Sinatra :: Anwendung: 0x0000000381bde0>:

Nameerror - undefined lokale Variable oder Methode `user_details' für #:

Mye post-Methode:

post "/" do 
    user_details = UserDetails.new(params["name"], params["email"]) 
    if user_details.valid? 
    begin 
     worksheet.insert_rows(worksheet.num_rows+1, [user_details.to_row]) 
     worksheet.save 
     erb :thanks 
    rescue 
     erb :index 
    end 
    else 
    erb :index 
    end 
end 

Ausblick:

<form action="/" method="POST"> 
      <div class="form-group<%= 'has-error' if user_details.errors.include?(:name) %>"> 
      <label for="name" class="control-label">Name</label> 
      <input type="text" class="form-control" name="name" id="name" value="<%= user_details.name %>"> 
      <% user_details.errors.full_messages_for(:name).each do |message| %> 
       <span class="help-block"><%= message %></span> 
      <% end %> 
      </div> 
</form. 

Logs sagen, dass es nicht die user_details va finden riable im ersten Div-Block/Klasse.

Irgendwelche Ideen?

thanks.erb

<div class="jumbotron"> 
    <div class="container"> 
    <div class="row"> 
     <div class="col-md-12"> 
     <h1>Thanks!</h1> 
     <p>We'll let you know when our platform is ready. Stay tuned!</p> 
     </div> 
     <div class="col-md-4"> 
     <a href="/"><button type="submit" class="btn btn-primary">Back</button></a> 
     </div> 
    </div> 
    </div> 
</div> 

Antwort

1

Sie user_details definiert eine lokale Variable, die in der Ansicht nicht verfügbar ist. Zwei Optionen:

  1. Definieren Sie eine Instanzvariable @user_details und verwenden Sie diese in der Ansicht.
  2. Definieren Sie eine lokale Variable user_details und machen Sie die Ansicht (wie jetzt), vorbei an der Variable: erb :thanks, locals: {user_details: user_details} (oder erb :index, locals: {user_details: user_details}, nicht sicher, wo der Fehler herkommt) tbuehlmann
+0

Erstaunlich, thx. Leider wird die Datei thank.erb auf Heroku nicht gerendert. Lokal funktioniert es, aber nicht bei Heroku. Ich habe die Datei in views/thank.erb gespeichert. Relevanter Code siehe oben. – JohnSmith

+0

Ich kann es nicht reproduzieren. Können Sie ein Repository bereitstellen, das ich nach Heroku schieben und testen kann? – tbuehlmann

+0

sorry, hatte gerade eine kurze git einleitung, hier die repo https://github.com/johnsmith1212/12 thx im voraus! – JohnSmith

Verwandte Themen