1

エラー: nil:NilClass の未定義のメソッド `map'

コントローラ

def new 
  @book=Book.new
  @subjects=Subject.find(:all)
end

モデル

belongs_to :subject
attr_accessible :title, :description, :subject_id
validates_presence_of :title,:description

意見

<table>
    <tr>
        <td><b><%= f.label 'Title' %></b></td>
        <td><%= f.text_field :title %></td>
    </tr>
    <tr>
        <td><b><%= f.label 'Description' %></b></td>
        <td><%= f.text_area :description %></td>
    </tr>
    <tr>
        <td><b><%= f.label 'Subject' %></b></td>
        <td><%= f.collection_select(:subject_id,@subjects,:id,:name) %></td>
    </tr>
    <tr>
        <td><%= f.submit 'Save' %></td>
    </tr>
</table>

タイトルと説明を入力せずに保存しようとすると、上記のエラーが表示されます。タイトルと説明を入力すると、うまくいきます。誰でも私を助けてくれますか?

4

3 に答える 3

0
<h2> Add New Book </h2>
<%= form_for(@book) do |f| %>
<% if @book.errors.any? %>
  <ul>
  <% @book.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
<% end %>


<table>

<tr><td><b><%= f.label 'Title' %></b></td>
<td><%= f.text_field :title %></td></tr>

<tr><td><b><%= f.label 'Description' %></b></td>
<td><%= f.text_area :description %></td></tr>

<tr><td><b><%= f.label 'Subject' %></b></td>
<td><%= f.collection_select(:subject_id,@subjects,:id,:name) %></td></tr>

<tr><td><%= f.submit 'Save' %></td></tr>

 </table>

<% end %>

<%= link_to 'Back', root_url %>

これは私のビューコードです。ビューコードからcollection_selectを削除すると、タイトルを空白にできない、または説明を空白にできないなどの検証エラーが表示され、何も入力せずに保存しようとすると...しかし、collection_selectを使用すると表示されます(エラー:未定義のメソッド) nil:NilClass の「マップ」)...しかし、タイトルや説明などの検証エラーが必要です。空白にすることはできません。

于 2013-04-23T07:01:12.013 に答える