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])