我想在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'等 - 它更容易消化) –