我想在Rails 4中創建一個應用程序。Rails - 如何顯示相關模型的屬性
我剛問過這個相關的問題,並得到了明確的答案。我似乎無法理解如何採取這一邏輯並將其應用於其他地方。
Rails How to show attributes from a parent object
我有一個用戶模型,輪廓模型項目模型和模型的大學。
關聯是:
Profile belongs to university
Profile belongs to user
University has many profiles
University has many projects
Projects HABTM user
Projects belong to universities
在我的項目控制,我定義@creator如下:
def create
logger.debug "xxx create project"
#authorise @project
@project = Project.new(project_params)
@project.creator_id = current_user.id
@project.users << current_user
respond_to do |format|
if @project.save
format.html { redirect_to @project }
format.json { render action: 'show', status: :created, location: @project }
else
format.html { render action: 'new' }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
我嘗試定義creator_profile這樣的:
def show
#authorise @project
@project = Project.find(params[:id])
@creator = User.find(@project.creator_id)
@creator_profile = @creator.profile
end
在我單表,我有屬性稱爲標誌和名稱。我使用的是頭像上傳器,其中我定義了徽標(這就是爲什麼我有兩個.logo的原因)。
在我的項目中,show,我想顯示項目創建者所屬的大學。
我已經試過這樣:
<%= image_tag(@creator_profile.university.logo.logo) %>
<div class="generaltext"><%= @creator_profile.university.name %> </div>
我得到這樣的結果:未定義的方法`標誌」的零:NilClass
基於鏈接到我的問題上面
<%= image_tag(creator_profile.university.logo.logo) %>
<div class="generaltext"><%= creator_profile.university.name %> </div>
上我得到這個結果:
undefined local variable or method `creator_profile' for #<#<Class:0x007f998f17ad88>:0x007f998d1ce318>
我不確定我是否理解上一個問題答案中給出的非常詳細的解釋。如果第一個版本是正確的,那麼我完全不理解這個解釋。如果第二個版本是正確的,那麼爲什麼這個錯誤信息會出現?
林想知道問題出現在那裏沒有大學和用戶之間的關聯嗎?我希望根據創建該項目的用戶來找到創建者所屬的uni。
這就是爲什麼我想:
<%= image_tag(creator_profile.project.university.logo.logo) %>
<div class="generaltext"><%= creator_profile.project.university.name %> </div>
我得到這個錯誤:
undefined method `project' for #<Profile:0x007f998ada41b8>
在你的控制,我看到您已經定義項目,但我沒有看到你正在定義creator_profile的位置。一旦您在控制器中定義了creator_profile,您就可以訪問它。如果您想要顯示creator_profile的大學,在定義它之後,您應該可以通過creator_profile.university訪問它。 –
我添加了我的控制器show def,這是我試圖定義creator_profile的地方。那已經存在了,所以肯定還有其他問題(或者可能像這樣定義是不正確的)。 – Mel
作爲一個說明,你應該包括你的完整模型構造(IE顯示'belongs_to'等 - 它更容易消化) –