错误 - 表单中的第一个参数不能包含nil或为空

时间:2016-03-16 07:17:25

标签: ruby-on-rails forms

先发制人地开始,我已经查看过处理此问题的各种类似文章,但我仍然收到错误。
我开始尝试创建GPA计算器和跟踪器应用程序以获得乐趣(并且花了很多时间搜索文档);我有一个独特的控制器和视图,因为重定向到一个完整的不同页面,每次计算或保存一个新的GPA看起来很难看。
在我添加表单之前,Rails将显示所有内容而不会出现错误,当前没有写入任何其他erb,并且表单旨在从“f.selection”标记中提交字母等级值。
罪魁祸首是@cgpa中的<%= form_for @cgpa do |f| %>

来自主\索引视图的表单:

<%= form_for @cgpa do |f| %>
 <div class="field">
  (...)
 </div>
 <div class="actions">
  <%= f.submit 'Calculate' %>
 </div>
<% end %>

我的控制器:

class MainController < ApplicationController
 def index
  #@cgpa = CurrentGpa.all  #currently calls a key_to error while form exists, otherwise no error is raised
  @pgpa = PastGpa.all
  @csem = CurrentSemester.all
  @psem = PastSemester.all
 end
 def new 
  @cgpa = CurrentGpa.new
 end
 def create
 (...)
 end
end

路线只是Rails.application.routes.draw { root 'main#index'; resources :main }

如果需要任何其他信息,请告诉我们添加&gt;。&gt;

1 个答案:

答案 0 :(得分:0)

当您使用:<%= form_for @cgpa do |f| %>时,会自动尝试将表单提交到CurrentGpasController create操作,并且这样做会向current_gpas_path发送请求。所以你在路线上没有这条路,这就是它抛出错误的原因。您可以为CurrentGpa添加路线,如:

resources :current_gpas

或者您可以在form_for

中指定路径
<%= form_for @cgpa, url: any_path do |f| %>

因此,这会将form提交给指定的url

如果您添加current_gpas路线,请创建controlleraction来处理您的输入。

正如评论中所述,请在@cgpa = CurrentGpa.new操作中添加index。以上将解决您在此之后遇到的错误。

希望这有帮助。