Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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:更改列表顺序后未显示错误消息_Ruby On Rails_Ruby_Error Handling_Controller - Fatal编程技术网

Ruby on rails RubyonRails:更改列表顺序后未显示错误消息

Ruby on rails RubyonRails:更改列表顺序后未显示错误消息,ruby-on-rails,ruby,error-handling,controller,Ruby On Rails,Ruby,Error Handling,Controller,我最近请求帮助重新排列复选框列表 我找到了一个很好的答案,然后离开并更改了代码。由此, <div class="tech" STYLE="text-align: left;"> <b>Technologies:</b> <style> .split { text-align:left; } </style> <p><ul> <% for technol in Techno

我最近请求帮助重新排列复选框列表

我找到了一个很好的答案,然后离开并更改了代码。由此,

<div class="tech" STYLE="text-align: left;">
  <b>Technologies:</b>
  <style>
    .split { text-align:left; }
  </style>


  <p><ul> 

  <% for technol in Technol.all %> 
   <li class="split"> 
    <%= check_box_tag "project[technol_ids][]", technol.id,  @project.technols.include?(technol) %> 
    <%= technol.tech %> 
   </li> 

  <% end %> 
 </ul> 
 </p> 
我现在注意到,如果用户进入一个新项目,并且
验证我的代码中出现的
标志或
验证我的代码中出现的
标志的格式,则不会显示错误消息,相反,我会收到以下错误消息:

NoMethodError in Projects#create 
line #256 raised: 
undefined method `each' for nil:NilClass 

Extracted source (around line #256): 
253: 
254: <p><ul> 
255: 
256: <% @all_technols.each do |technol| %> 
257: 
258: 
259:

在控制器的
create
方法中,或者不管处理提交的操作的名称是什么,请确保在呈现
new
视图之前再次填充
@all\u technols
,否则会出现此错误

因此,在
创建
操作中,例如:

else

  format.html { @all_technols = Technol.order('tech ASC'); render action: "new" }
  format.json { render json: @project.errors, status: :unprocessable_entity }
end

在控制器的
create
方法中,或者不管处理提交的操作的名称是什么,请确保在呈现
new
视图之前再次填充
@all\u technols
,否则会出现此错误

因此,在
创建
操作中,例如:

else

  format.html { @all_technols = Technol.order('tech ASC'); render action: "new" }
  format.json { render json: @project.errors, status: :unprocessable_entity }
end

我已将我的
create
操作添加到我的问题中。我不明白为什么在它工作之前,添加代码来更改顺序会影响它?因为之前,您直接查询数据库中的
Technol。视图中的所有
,都没有中间变量。现在您有了一个名为
@all_technols
,您可以从控制器中实例化它。因此,您必须确保在呈现视图之前对其进行实例化谢谢。这就是问题所在。我已将我的
create
操作添加到我的问题中。我不明白为什么在它工作之前,添加代码来更改顺序会影响它?因为之前,您直接查询数据库中的
Technol。视图中的所有
,都没有中间变量。现在您有了一个名为
@all_technols
,您可以从控制器中实例化它。因此,您必须确保在呈现视图之前对其进行实例化谢谢。这就是问题所在。
def create  
    @project = Project.new(params[:project])
        @project.client = params[:new_client] unless params[:new_client].blank?
        @project.role = params[:new_role] unless params[:new_role].blank?
        @project.industry = params[:new_industry] unless params[:new_industry].blank?
        @project.business_div = params[:new_business_div] unless params[:new_business_div].blank?


if !params[:technols].nil?

            params[:technols][:id].each do |tech|

                if !tech.empty?

                    @project_technol = @project.projecttechnols.build(:technol_id => tech) 

                end
            end

end

    respond_to do |format|
      if @project.save
        format.html { redirect_to @project, notice: 'Project was successfully created.' }
        format.json { render json: @project, status: :created, location: @project }
      else
        format.html { render action: "new" }
        format.json { render json: @project.errors, status: :unprocessable_entity }
      end
    end
  end
else

  format.html { @all_technols = Technol.order('tech ASC'); render action: "new" }
  format.json { render json: @project.errors, status: :unprocessable_entity }
end