1

過去数時間、何が間違っているのかを理解しようとしましたが、解決策にたどり着けません。簡単に言えば、「学期」というテーブルのデータを選択ボックスに入力しようとしています。(SOでこれに関する多くの質問を見てきましたが、アプリでそれらを機能させることはできません)。

ここに私が持っているものがあります:

コースコントローラー

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 は、フォーム ヘルパーの選択に対応しています。

これに関するどんな助けも素晴らしいでしょう!

4

1 に答える 1

6

@semestersコントローラーで変数を設定する必要があります。

def new
  @semesters = Semester.all
end

設定されていないインスタンス変数が に評価されるため、エラーが発生するため、オブジェクトのメソッドnilを呼び出そうとします。mapnil

于 2013-07-29T21:18:36.320 に答える