1

Rails プロジェクトに User モデル (devise によって生成) と Submission モデルがあります。「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])
4

1 に答える 1

2

データを正しく入力していると仮定すると、提出物を検索したら、次のものだけが必要になります。

@submission.user

データに問題がないと思われる場合は、Rails コンソールで次のことを試してください。

> Submission.first.user

そこに何が見えますか?


表示されている特定のエラーは、次の理由によるものです。

params[@submission.user_id]

その中に何かがある可能性は低いです。ユーザー ID が (たとえば) "1" の場合params、キー "1" に対応するハッシュの値を求めています。

于 2012-08-27T17:39:59.190 に答える