Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 如何在不使用Rails中的资源(action:new,:create)的情况下创建表单?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在不使用Rails中的资源(action:new,:create)的情况下创建表单?

Ruby on rails 如何在不使用Rails中的资源(action:new,:create)的情况下创建表单?,ruby-on-rails,ruby,Ruby On Rails,Ruby,这是我的控制器 class SchoolsController < ApplicationController def teacher @teacher = Teacher.new end def form_create @teacher = Teacher.new(teacher_params) if teacher.save redirect_to schools_teacher_path else flash[:n

这是我的控制器

class SchoolsController < ApplicationController
  def teacher
    @teacher = Teacher.new
  end

  def form_create
    @teacher = Teacher.new(teacher_params)
    if teacher.save
      redirect_to schools_teacher_path
    else
      flash[:notice] = "error"
    end
  end

  private
  def teacher_params
    params.require(:teacher).permit(:name)
  end
end
class-SchoolsController
这是我的观点/schools/teacher.html.erb

<%= form_for :teacher do |f| %>
  <%= f.text_field :name %> 
  <%= f.submit %>
<% end %>


我是Ruby on Rails新手,不知道如何继续。

您应该将此移到
教师控制器上。让我演示如何:

首先,您需要创建控制器,您可以通过在项目根目录的终端上键入以下命令来完成:

$rails g控制器新增

然后进入路由文件(
config/routes.rb
):

然后转到
teachers\u controller.rb
文件并添加以下内容:

class TeachersController < ApplicationController
  def new
   @teacher = Teacher.new
  end

  def reate
   @teacher = Teacher.new(teacher_params)
   if @teacher.save
    redirect_to schools_teacher_path
   else
    redirect_to schools_teacher_path, notice: "error"
  end
end

 private

 def teacher_params
  params.require(:teacher).permit(:name)
 end
end

请告诉我进展如何

如果您使用的是Rails 5.1,我建议您阅读本文,将此逻辑放入TeachersController,并创建操作
new
create
。没有必要违背公约,这篇文章非常有用,感谢通过链接获得更多的理解,特别是非资源性的路线。为什么每个人都向他展示如何废除公约,而不是教他如何正确地执行公约?
class TeachersController < ApplicationController
  def new
   @teacher = Teacher.new
  end

  def reate
   @teacher = Teacher.new(teacher_params)
   if @teacher.save
    redirect_to schools_teacher_path
   else
    redirect_to schools_teacher_path, notice: "error"
  end
end

 private

 def teacher_params
  params.require(:teacher).permit(:name)
 end
end
<%= form_for :teacher do |f| %>
 <%= f.text_field :name %> 
 <%= f.submit %>
<% end %>