在我的應用程序導航欄,我有以下代碼: 應用程序/視圖/佈局/ application.html.erb:爲什麼邏輯在我的Rails應用程序中不起作用?
<ul class="nav navbar-nav navbar-right">
<% if user_signed_in? %>
<%if current_user.userinfo(&:info_complete) %>
<li><%= link_to "My profile", userinfo_path(current_user.userinfo.id) %></li>
<% elsif current_user.employer(&:info_complete)%>
<li><%= link_to "My profile", employer_path(current_user.employer.id) %></li>
<%else%>
<li><%= link_to "Complete Profile", application_studoremp_path %></li>
<%end%>
<li><%= link_to "Sign Out", destroy_user_session_path, method: :delete %></li>
<% else %>
<li><%= link_to "Log In", new_user_session_path %></li>
<li><%= link_to "Sign Up", new_user_registration_path %></li>
<% end %>
</ul>
當用戶註冊後,他們將被引導到一個頁面選擇如果他們想繼續作爲僱主或學生,那麼他們將被引導到一個頁面來填寫用戶信息,如果他們選擇學生,或者如果他們選擇僱主填寫僱主信息。因此,在註冊和填寫其中一個表單之間,用戶不會擁有「userinfo.id」或「employer.id」。這就是爲什麼我將它們重定向到「application_studoremp_path」。但該應用程序拋出一個錯誤,說沒有找到userinfo.id。顯然它沒有被發現,因爲它還沒有被創建,這就是爲什麼有一個「其他」部分。爲什麼邏輯不起作用? :info_complete是userinfo模型和僱主模型中的函數,用於檢查信息是否已填寫。一切工作正常,如果用戶已經存在(如果userinfo.id或employer.id已經存在)。 這是錯誤:
我userinfo.rb型號:
class Userinfo < ActiveRecord::Base
belongs_to :user
def info_complete?
name? && email? && college? && gpa? && major?
end
嘿佩德羅,我的模型是對,因爲它在其他地方有效。它僅在用戶登錄後才起作用。我的問題是,既然info_complete在Userinfo或Employer上的返回值都不爲真,爲什麼代碼不會直接跳轉到
我認爲它不會跳躍,因爲你的函數返回true(當應該是false),這就是爲什麼。拋出錯誤顯示rails正在嘗試訪問您的第一條語句。試着改變用戶信息和僱主聲明的立場,讓僱主第一。 –
你嘗試了我的第一個建議嗎?使用 」:」 –