現在、Ruby on Rails 6 超入門という教材で勉強し始めたばかりの
者です。
【データの新規作成】という項目で、フォームに入力して送信をしてもデータが追加されません。
分かりずらい質問で大変申し訳ありませんが、どなたか教えて頂けないでしょうか。
写真ものせておきます(なぜか左寄りに入力画面が出てきてしまい不格好です。教科書ではもっときれいなのですが...)
何卒宜しくお願い致します。
###フォームに入力時の写真です。(左に寄って不格好です。)
###送信したデータが追加されません。
###下の写真は教科書のものです。本来ならば、下の様になると思うのですが
###index.html.rb
<h1 class="display-4 text-primary">People#index</h1> <p><%= @msg %></p> <table class="table"> <tr> <th>Id</th><th>Name</th> </tr> <% @data.each do |obj| %> <tr> <td><%= obj.id %></td> <td><a href="/people/<%= obj.id %>"> <%= obj.name %></a></td> </tr> <% end %> </table>
###add.html.erb
<h1 class="display-4 text-primary">People#add</h1> <p><%= @msg %></p> <%= form_for(@person, url:{controller:'people', action:'create'}) do |form| %> <div class="form-group"> <label for="name">Name</label> <%= form.text_field :name, class:"form-control" %> </div> <div class="form-group"> <label for="age">Age</label> <%= form.text_field :age, class:"form-control" %> </div> <div class="form-group"> <label for="mail">Mail</label> <%= form.text_field :mail, class:"form-control" %> </div> <%= form.submit class:"btn btn-primary" %> <% end %>
###people_controller.rb
class PeopleController < ApplicationController def index @msg = 'Person data.' @data = Person.all end def show @msg = "Indexed data." @data = Person.find(params[:id]) end def add @msg = "add new data." @person = Person.new end def create if request.post? then obj = Person.create(name: params['name'], age: params['age'], mail:params['mail']) end redirect_to '/people' end end
###routes.rb
Rails.application.routes.draw do get 'people/index' get 'people', to: 'people#index' get 'people/add' post 'people/add', to: 'people#create' get 'people/:id', to: 'people#show' get 'msgboard', to: 'msgboard#index' post 'msgboard', to: 'msgboard#index' get 'msgboard/index' post 'msgboard/index' get 'hello/index' get 'hello', to: 'hello#index' get 'hello/other' post 'hello', to: 'hello#index' post 'hello/index' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
回答1件
あなたの回答
tips
プレビュー