在我的 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 控制台中尝试它时,它会返回图像的文件路径,但是当我尝试在我的应用程序中实现它时,我收到错误undefined method `file' for nil:NilClass。
当我从我的图像标签中删除“文件”时(所以它是图像: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