Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails:未定义的方法'model_name';班级:班级_Ruby On Rails_Ruby_Database_Methods_Undefined - Fatal编程技术网

Ruby on rails RubyonRails:未定义的方法'model_name';班级:班级

Ruby on rails RubyonRails:未定义的方法'model_name';班级:班级,ruby-on-rails,ruby,database,methods,undefined,Ruby On Rails,Ruby,Database,Methods,Undefined,我试图允许用户将项目输入数据库。其中一个字段允许他们为该项目输入多种技术 这是我的项目控制器,新建和创建操作 def new @project = Project.new @all_technols = Technol.all @project_technol = @project.projecttechnols.build respond_to do |format| format.html # new.html.erb format.json { rende

我试图允许用户将项目输入数据库。其中一个字段允许他们为该项目输入多种技术

这是我的项目控制器,新建和创建操作

def new
  @project = Project.new
  @all_technols = Technol.all
  @project_technol = @project.projecttechnols.build

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @project }
  end
end

def create
  @project = Project.new(params[:project])
  params[:technols][:id].each do |technol|
    if !technol.empty?
      @project.projecttechnols.build(:technol_id => technol)
    end
  end
end
这是我的多选择技术下拉列表的新项目视图

<%= fields_for(@project_technol) do |ab| %>
  <div class="tech">
    <%= ab.label "All Tech" %><br/>
    <%= collection_select(:technols, :id, @all_technols, :id, :tech, {}, {:multiple => true} ) %>
  </div>
<% end %>

我现在得到这个错误:

NoMethodError in Projects#create

undefined method `map' for nil:NilClass

Extracted source (around line #240):

237: <div class="tech">
238: <%= ab.label "All Tech" %><br/>
239: 
240: <%= collection_select(:technols, :id, @all_technols, :id, :tech, {}, {:multiple => true} ) %>
241: </div>
242: <% end %>
NoMethodError在项目中#创建
nil:NilClass的未定义方法“map”
提取的源(第240行附近):
237: 
238:
239: 240:对})%%> 241: 242:
编辑2

@all_technols=创建操作中的Technol.all

我现在得到这个错误

Showing /home/james/Desktop/webapp/app/views/projects/new.html.erb where line #233 raised:

    undefined method `model_name' for NilClass:Class

Extracted source (around line #233):

233: <%= fields_for(@project_technol) do |ab| %>
234: 
235: <div class="tech">
236: <%= ab.label "All Tech" %><br/>
NoMethodError in Projects#show

Showing /home/james/Desktop/webapp/app/views/projects/show.html.erb where line #181 raised:

undefined method `technol' for #<Project:0xb36823c>
Extracted source (around line #181):

178: <h3>Related books</h3>
179: 
180: <ul>
181:   <% @project.technol.each do |technol| %>
182:     <li><%= technol.tech %> <%= link_to "Details", technol_path(technol) %></li>
183:   <% end %>
184: </ul>
项目中的命名错误#显示
显示/home/james/Desktop/webapp/app/views/projects/show.html.erb,其中第181行出现:
未定义的方法“technol”#
提取的源(第181行附近):
178:相关书籍
179: 
180:
    181: 182:
  • 183: 184:

您的
创建
操作将再次呈现
新的
视图。但是,
@project\u technol
未在
创建
操作中定义。
方法的
fields\u对传入的参数(
@project\u technol
)调用
model\u name
方法,但由于
@project\u technol=nil
,因此抛出了该错误。要解决此问题,请在
create
操作中更改


@JamesMcL13我猜新问题与旧问题完全相同,因为您没有在
创建
操作中设置
@all\u technols=Technol.all
。谢谢各位,我现在有一个新错误。我在项目控制器的创建操作中设置了
@all\u technols=Technol.all
。请参见edit2try
@project.technols。请改为查看每个
。谢谢。该项目现在显示在项目创建页面上选择的所有技术
Showing /home/james/Desktop/webapp/app/views/projects/new.html.erb where line #233 raised:

    undefined method `model_name' for NilClass:Class

Extracted source (around line #233):

233: <%= fields_for(@project_technol) do |ab| %>
234: 
235: <div class="tech">
236: <%= ab.label "All Tech" %><br/>
@project.projecttechnols.build(:technol_id => technol)
@project_technol = @project.projecttechnols.build(:technol_id => technol)
NoMethodError in Projects#create

undefined method `map' for nil:NilClass

Extracted source (around line #240):

237: <div class="tech">
238: <%= ab.label "All Tech" %><br/>
239: 
240: <%= collection_select(:technols, :id, @all_technols, :id, :tech, {}, {:multiple => true} ) %>
241: </div>
242: <% end %>
NoMethodError in Projects#show

Showing /home/james/Desktop/webapp/app/views/projects/show.html.erb where line #181 raised:

undefined method `technol' for #<Project:0xb36823c>
Extracted source (around line #181):

178: <h3>Related books</h3>
179: 
180: <ul>
181:   <% @project.technol.each do |technol| %>
182:     <li><%= technol.tech %> <%= link_to "Details", technol_path(technol) %></li>
183:   <% end %>
184: </ul>
@project.projecttechnols.build(:technol_id => technol)
@project_technol = @project.projecttechnols.build(:technol_id => technol)