2017-06-24 95 views
0

發佈表單詳細信息時,我有一個基本的Sinatra應用程序。在Heroku上運行NameError - 未定義的局部變量或方法`user_details'爲#<Sinatra :: Application:0x0000000381bde0>:

NameError當我得到這個錯誤,尤其是 - 未定義的局部變量或方法`user_details'爲#:

MYE POST方法:

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 

查看:

<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. 

日誌說它找不到user_details VA rible在第一個div塊/類。

任何想法?

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> 

回答

1

你定義一個user_details的局部變量,這是不是在視圖中可用。兩個選項:

  1. 定義一個實例變量@user_details並在視圖中使用它。
  2. 定義一個局部變量user_details(就像現在),並呈現視圖,傳遞變量:erb :thanks, locals: {user_details: user_details}(或erb :index, locals: {user_details: user_details},不知道在哪裏的錯誤來自)
+0

驚人,THX tbuehlmann。不幸的是,這個thanks.erb文件並沒有在Heroku上渲染。它在本地運行,但不在部署到Heroku時運行。我將該文件保存在views/thanks.erb中。相關代碼見上文。 – JohnSmith

+0

我無法複製它。你能提供一個我可以推送到Heroku並測試的存儲庫嗎? – tbuehlmann

+0

對不起,剛做了一個簡短的git介紹,這裏提前https://github.com/johnsmith1212/12 thx! – JohnSmith

相關問題