Ruby on rails Rails未定义的方法“[]';零级:零级
以下是我当前的代码。我删除了不需要了解问题的部分 设定模型Ruby on rails Rails未定义的方法“[]';零级:零级,ruby-on-rails,arrays,ruby,ruby-on-rails-4,Ruby On Rails,Arrays,Ruby,Ruby On Rails 4,以下是我当前的代码。我删除了不需要了解问题的部分 设定模型 class Setting < ActiveRecord::Base attr_accessor :program_id, :session_types def initialize @session_types = Array.new @program_id = '' end end 设置视图 <%= form_for(@setting) do |f| %> #ERROR LINE
class Setting < ActiveRecord::Base
attr_accessor :program_id, :session_types
def initialize
@session_types = Array.new
@program_id = ''
end
end
设置视图
<%= form_for(@setting) do |f| %> #ERROR LINE
...
<% end %>
查看是否是设置
的数组
属性会话类型。由于测试
,我在行的表单_之后的行中得到了一个错误,应该是正确的。(不需要线路来解决问题)
我认为我没有正确理解模型的数组
属性的初始化。任何有助于理解抛出错误原因的帮助都将不胜感激!提前谢谢=试试这个
def initialize
super
@session_types = Array.new
@program_id = ''
end
您很少粘贴错误,但这是我想到的第一件事。如果这没有帮助,请发布整个错误
原因是您的设置
类继承自ActiveRecord::Base
,调用super
首先调用父级的initialize
方法,这样您就可以向该方法添加功能(扩展它)。如果没有super
,您将覆盖它,这意味着您将用您的代码替换默认情况下它所做的一切(例如连接到数据库、验证)。不要覆盖ActiveRecord::Base
上的initialize
方法。在初始化回调后使用。参考你的问题确保你认为是设置
类。@DaveNewton你这是什么意思?我只有一门课叫Setting抱歉。添加了完整的错误。添加“super”似乎可以解决这个问题。有什么原因吗?@ali因为不建议重写initialize,因为它不是您的基类,您绕过了所有Rails的初始化。
ActionView::Template::Error (undefined method `[]' for nil:NilClass):
3: </h1>
4: <p>We need to get your booking page setup. Please select the Program you wish to put up for booking.</p>
5:
6: <%= form_for(@setting) do |f| %>
7: <% @programs.each do |program| %>
8: <%= f.radio_button(:program_id, program.program_id)%>
9: <%= label_tag(:program_name, program.name) %>
app/views/settings/new.html.erb:6:in `_app_views_settings_new_html_erb__94314060479739781_70294544827460'
class Testing < ActiveRecord::Base
attr_accessor :program_id
end
def initialize
super
@session_types = Array.new
@program_id = ''
end