Я провел последние несколько часов, пытаясь понять, что я делаю неправильно, но я не могу прийти к решению. Проще говоря, я пытаюсь заполнить поле выбора данными из таблицы под названием «семестры». (Я видел множество вопросов относительно этого на SO, но я не могу заставить их работать с моим приложением).Ruby on Rails - неопределенный метод `map 'for nil: NilClass
Вот что у меня есть:
Курсы Контроллер
class CoursesController < ApplicationController
def create
@semesters = Semester.all()
@course = Course.new(params[:course])
# Save the object
if @course.save
flash[:notice] = "Course created."
redirect_to(:action => 'list')
else
# If save fails, redisplay the form so user can fix problems
render('new')
end
end
end
Посмотреть
#views/courses/new.html.erb
<%= form_for(:course, :url => {:action => 'create'}) do |f| %>
<%= f.select(:semester, @semesters.map { |s| [ s.name, s.id ] }) %>
<%= submit_tag("Create Course") %>
<% end %>
Я надеялся, что это будет выход:
<select>
<option id="1">Spring 2013</option>
<option id="2">Fall 2013</option>
</select>
Но вместо этого, я получаю ошибка:
views/courses/new.html.erb where line #32 raised:
undefined method `map' for nil:NilClass
Линия № 32 соответствует моему выбору формы.
Любая помощь по этому вопросу будет замечательной!
В сообщении об ошибке говорится, что '@ semesters' является' nil'. –
Можете ли вы опубликовать действие 'edit'' CoursesController'? – daniloisr
Также опубликуйте новое действие. Я предполагаю, что вы не определяете @semesters в этом действии. –