В моем приложении 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} %>
Тег данных title действительно возвращает название шага, но я получаю сообщение об ошибке с тегом данных изображения. Когда я пробую это в консоли rails, он возвращает путь к файлу изображения, но когда я пытаюсь реализовать его в своем приложении, я получаю сообщение об ошибке undefined method `file' for nil:NilClass.
Когда я удаляю "файл" из своего тега изображения (так что это изображение: steps.find_by_number(i).images.order("position ASC").first), и я возвращаю тег данных изображения для каждой ссылки, я получаю [Объект Object].
Как я могу заставить его возвращать правильный результат запроса?
Вот мой контроллер шагов:
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