1

我在 Rails 项目中有一个用户模型(由设计生成)和一个提交模型。我在用户模型中添加了一个名为“full_name”的字段。此外,提交模型中有一个“user_id”字段。

我想在提交显示页面上显示与提交相关联的用户的全名。现在它显示来自提交模型的 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])
4

1 回答 1

2

假设您正确地填充了数据,您只需在查找提交内容后执行以下操作。

@submission.user

如果您认为数据没问题,那么在 Rails 控制台中尝试以下操作。

> Submission.first.user

你在那里看到什么?


您看到的具体错误是因为:

params[@submission.user_id]

不太可能有任何东西。如果用户 ID 为“1”(例如),那么您将要求params哈希中与键“1”相对应的值。

于 2012-08-27T17:39:59.190 回答