加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 用于nil的未定义方法`map’:NilClass,是什么

发布时间:2020-12-16 21:23:46 所属栏目:百科 来源:网络整理
导读:嗨,我正面临这个错误, 对rails来说是全新的,所以无法弄清楚导致它的原因 我的newBook.html.erb html head title new Book /title /head body h1%= @hello_message %/h1 h1Add new book/h1 %= form_tag :action = 'create' % p label for="book_title"Title/l
嗨,我正面临这个错误,
对rails来说是全新的,所以无法弄清楚导致它的原因

我的newBook.html.erb

<html>
    <head>
        <title> new Book </title>
    </head>
    <body>
        <h1><%= @hello_message %></h1>
        <h1>Add new book</h1>
        <%= form_tag :action => 'create' %>
        <p>
            <label for="book_title">Title</label>:
            <%= text_field 'book','title' %>
        </p>
        <p>
            <label for="book_price">Price</label>:
            <%= text_field 'book','price' %>
        </p>
        <p>
            <label for="book_subject">Subject</label>:
            <%= collection_select(:book,:subject_id,@subjects,:id,:name) %>
        </p>
        <p>
            <label for="book_description">Description</label>
            <br/>
            <%= text_area 'book','description' %>
        </p>
        <%= submit_tag "Create" %>
        <%= end_form_tag %>
        <%= link_to 'Back',{:action => 'list'} %>
    </body>
</html>

我的书模型:book.rb

class Book < ActiveRecord::Base
  attr_accessible :title,:price,:description,:created_at 
  belongs_to :subject
  validates_presence_of :title
  validates_numericality_of :price,:message=>"Error Message"
end

我的主题模型:subject.rb

class Subject < ActiveRecord::Base
  attr_accessible :name
  has_many :book

end

堆栈跟踪是:

actionpack (3.2.13) lib/action_view/helpers/form_options_helper.rb:364:in `options_from_collection_for_select'
actionpack (3.2.13) lib/action_view/helpers/form_options_helper.rb:600:in `to_collection_select_tag'
actionpack (3.2.13) lib/action_view/helpers/form_options_helper.rb:191:in `collection_select'
app/views/home/newBook.html.erb:19:in `_app_views_home_new_ook_html_erb__299261930_24178164'
actionpack (3.2.13) lib/action_view/template.rb:145:in `block in render'
activesupport (3.2.13) lib/active_support/notifications.rb:125:in `instrument'
actionpack (3.2.13) lib/action_view/template.rb:143:in `render'
# -- snipped --

解决方法

<%= collection_select(:book,:name) %>

您的@subjects对象未定义.您需要在控制器操作中为此页面设置一些设置该变量内容的内容,例如:

@subjects = Subject.all

查看options_from_collection_for_select的源代码 – 它首先要做的是对传递给它的集合进行地图调用(在你的情况下为@subjects).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读