我有一个用户模型(由设计生成)和Rails项目中的提交模型。我在用户模型中添加了一个名为“full_name”的字段。此外,提交模型中还有一个“user_id”字段。
我想在提交节目页面上显示与提交相关联的用户的full_name。现在它显示提交模型中的user_id就好了。
用户模型我有这个:
class User < ActiveRecord::Base
has_many :submissions
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
attr_accessible :email, :password, :password_confirmation, :remember_me, :full_name, :role_id
validates_presence_of :full_name
end
这是提交的模型:
class Submission < ActiveRecord::Base
belongs_to :user
attr_accessible :description, :title, :user_id
end
这是在控制器中:
def show
@submission = Submission.find(params[:id])
@user = User.find(params[@submission.user_id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @submission }
end
end
当我尝试在视图中使用此行时,我得到了什么:
<%= @user.full_name %>
我收到此错误:
Couldn't find User without an ID
我尝试了几种变体,并且无法弄清楚应该代替什么:
@user = User.find(params[@submission.user_id])
答案 0 :(得分:2)
假设您正确填充数据,只需在查看提交内容后就需要以下内容。
@submission.user
如果您认为数据正常,请在Rails控制台中尝试以下操作。
> Submission.first.user
你在那看到什么?
您看到的具体错误是因为:
params[@submission.user_id]
不太可能有任何东西。如果用户ID为“1”(例如),那么您要求params
散列中与键“1”对应的值。