所以,对不起,如果这不是连贯的......我还不知道我所有的Ruby / Rails术语。
我有一个名为“Profile”的模型和一个名为“User”的模型,这两个链接如下:
class Profile < ActiveRecord::Base
belongs_to :user
class User < ActiveRecord::Base
has_one :profile
现在,在我所做的配置文件的“索引”和“显示”视图中,我希望能够从User模型访问属性“name”。我怎样才能做到这一点?我想我在控制器中需要一些看起来像这样的东西:
class ProfilesController < ApplicationController
def show
@user = User.find(params[:user_id])
然后在视图中访问它:
<%= @user.name %>
但那里的那段代码不起作用。
感谢您的帮助。
答案 0 :(得分:4)
如果属性name
属于个人资料模型,请在您的视图中显示:
<%= @user.profile.name %>
如果属性name
属于用户模型,请停止服务器,运行rake db:migrate
以确保每次迁移都已应用于您的数据库;然后运行rails console
或ruby script/console
以检查该属性是否适用于您的模型:
> u = User.first
> u.name
如果最后一个命令返回一个空字符串或第一个用户的名字,那么一切正常。如果你得到一个NoMethodError: undefined method
,你应该检查你的数据库,因为可能缺少应该处理name
属性的列。
答案 1 :(得分:0)
你的控制器应该工作。那部分是正确的。
几个问题
您的个人资料是否有user_id?
您是否运行了为Profile
创建属性user_id而为User
创建了profile_id的迁移?