先发制人地开始,我已经查看过处理此问题的各种类似文章,但我仍然收到错误。
我开始尝试创建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;
答案 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
路线,请创建controller
和action
来处理您的输入。
正如评论中所述,请在@cgpa = CurrentGpa.new
操作中添加index
。以上将解决您在此之后遇到的错误。
希望这有帮助。