2017-08-03 102 views
0

這是我的控制器如何在Rails中不使用資源(action:new,:create)創建表單?

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 

這是我的意見/學校/ teacher.html.erb

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

我是新來的Ruby on Rails的,和不知道如何着手。

+1

如果您使用的是Rails 5.1,我會推薦閱讀這篇文章[Rails 5.1的form_with與form_tag與form_for](https://m.patrikonrails.com/rails-5-1s-form-with- vs-old-form-helpers-3a5f72a8c78a) – Asdrubal

+0

你應該把這個邏輯放入TeachersController並創建'new'和'create'動作。有沒有必要違背公約 –

+0

該文章是非常有用的,謝謝 – Mark

回答

1

你應該提出這個到TeachersController讓我告訴你如何:

首先,你需要創建控制器,你可以通過在項目的根目錄下的終端上鍵入此完成這件事:

$ rails g controller teachers new

然後到你的路由文件(config/routes.rb):

resources :teachers, only: [:new, :create] 

塔後牛逼轉到teachers_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 

然後你就可以在views/teachers/new.html.erb有以下形式:

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

請讓我知道如何去!

相關問題