私の Rails アプリには、多くのステップを持つプロジェクトがあり、各ステップには多くの画像があります。
各ステップに関するページへのリンクに、ステップに関する情報、特にステップの名前とステップに関連付けられたデフォルトの画像をタグ付けしようとしています。
<%= link_to "", project_step_path(@project, i), :class=> "dot",
data: {title: steps.find_by_number(i).name,
image: steps.find_by_number(i).images.order("position ASC").first.file} %>
タイトル データ タグはステップの名前を返しますが、画像データ タグでエラーが発生します。Rails コンソールで試してみると、イメージへのファイル パスが返されますが、アプリに実装しようとすると、nil:NilClass の undefined method `file'というエラーが発生します。
画像タグから「ファイル」を削除すると (画像: steps.find_by_number(i).images.order("position ASC").first)、各リンクの画像データ タグを返すと、 [オブジェクト オブジェクト]。
正しいクエリ結果を返すにはどうすればよいですか?
これが私のステップコントローラーです:
class StepsController < ApplicationController
before_filter :get_project
def show
@step = @project.steps.find_by_number(params[:id])
@image = Image.new
@images = @step.images.order("position")
@steps = @project.steps.order("number")
@numSteps = @steps.count
respond_to do |format|
format.html # show.html.erb
format.json { render :json => @step }
end
end
private
# get_project converts the project_id given by the routing
# into an @project object
def get_project
@project = Project.find(params[:project_id])
end
end