2017-08-03 1 views
0

これは私のコントローラRailsでリソース(アクション: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にこれを移動する必要があります:あなたは、コントローラを作成する必要が

まず、あなたがこのプロジェクトのルートディレクトリで、端末上でこれを入力することによって成し遂げることができます。

THA後

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

:あなたのルートファイル(config/routes.rb)に続いて$ rails g controller teachers new

トン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 %> 

私はそれがどのようになる教えてください!

関連する問題