到目前为止,我在rails应用程序中有两个模型。
User
模型包含id
,first_name
,last_name
,password
Wallet
模型包含name
,money
,user_id
在应用程序视图中,我可以通过插入
来显示我的User
<h1><%= @user.first_name %></h1>
但我无法显示
<h1><%= @wallet.money %></h1>
我在no method error
中获得users#show
。我不明白这个错误。
我有一个名为show
的方法,其中包含@user = User.find(params[:id])
,params
在下面的私有方法中定义。
我的问题是,我是否需要控制器和Wallet
模型的视图?我没想到因为我试图通过应用程序控制器显示内容。即使被定向的页面是Users#show
。
理想情况下,由于钱包有user_id
,我很乐意通过这样的方式显示货币价值...
@user.wallet.money
或其他......通过与当前用户关联的外键调用money值。
答案 0 :(得分:1)
可能您没有定义@wallet
,因此使用关联是nil
因此错误。
在User
模型中,您需要将关联定义为
has_one :wallet
在wallet
模型中..
belongs_to :user
然后控制器
@user = User.includes(:wallet).find_by_id(params[:id])
现在在视图中,您可以将其称为
@user.wallet.money
我建议您通过association_basics
更好地了解它,并在将来帮助您。