目前,我正在尝试为我的网站创建一个表单,该表单将允许用户输入信息,然后将该信息发布到我的数据库中进行存储。我是Rails开发人员的新手,请牢记这一点。
我能够到达用户可以看到表单并输入信息的地步,但是一旦他们点击了“提交”按钮,我就会收到一个错误,该错误是
StudentsController中的ArgumentError#在app / controllers / students_controller.rb:13:create中创建了错误的参数数量(0为1)
发送的参数如下
{"utf8"=>"✓",
"authenticity_token"=>"bLalQ9Ek5ziaGiGHj03AGPCTIABAgcT+o4eTgN44qv44dxNDlrGA0h2u5BSTQVTMh+YgA/mLPQee05lT7mxCsw==",
"student"=>{"first_name"=>"Andrew",
"last_name"=>"Terra"},
"commit"=>"Submit"}
以下是我的students_controller.rb文件。
class StudentsController < ApplicationController
def index
@students = Student.all
end
def new
@student = Student.new
end
def create
@student = Student.new(params.require[:student])
if @student.save
redirect_to students_path
end
end
def destroy
@student = Student.find_by_id(params[:id])
if @student.destroy
redirect_to students_path
end
end
end
以下是我的views / students / _form.html.erb文件
<%= form_for @student do |f| %>
<p>
<%= f.label :first_name %>
<%= f.text_field :first_name %>
</p>
<p>
<%= f.label :last_name %>
<%= f.text_field :last_name %>
</p>
<%= f.submit "Submit" %>
<% end %>
以下是我的/views/students/index.html.erb文件
<%= link_to "Create new information", new_student_path %> <br /> <hr>
<% @students.each do |fo| %>
Firstname: <%= fo.first_name %> <br />
Lastname: <%= fo.last_name %> <br />
<%= link_to "Delete info?", student_path(student), :data=>{:confirm=>"Are you sure ?"}, :method=> :delete %>
<br />
<hr>
<% end %>
最后,这是我的/views/students/new.html.erb文件
Enter new info
<hr>
<%= render :partial => "form" %>
我确实记得要放入resources :students
我的路线文件。我四处搜索,发现其他以前曾遇到过此问题的人,但是没有一种解决方案可用于我编写的代码。因此,我想知道是否有人可以指出错误的位置以及如何准确修复该错误。谢谢你。
您需要添加一个新的私有方法:
private
def student_params
params.require(:student).permit(:first_name, :last_name)
end
然后如前所述,将您的create方法更改为:
def create
@student = Student.new(student_params)
if @student.save
redirect_to students_path
end
end
我建议阅读有关“强参数”的文档-以便更好地了解它们的工作原理。https://github.com/rails/strong_parameters
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句