質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • JavaScript

    16440questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Ruby

    7679questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    7276questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

railsでの「Form」のデータ反映に関して

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 269

Syota

score 14

railsを使い簡単なアプリの開発を進めているのですが、「Form」に入力したデータを反映させるにはどの様な操作を行えば反映させる事が出来ますか??
viewの設定を行い項目名を表示する事は出来たのですが、入力したデータが反映されず空欄になってしまうので入力データを出力する設定の仕方を教えて頂きたいです。

回答よろしくお願いします。

「_form.html.erb」

  <% if syotum.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(syotum.errors.count, "error") %> prohibited this syotum from being saved:</h2>

      <ul>
      <% syotum.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :from %>
    <%= form.text_field :from, id: :syotum_from %>
  </div>

  <div class="field">
    <%= form.label :year %>
    <%= form.number_field :year, id: :syotum_year %>
  </div>

  <div class="field">
    <%= form.label :school %>
    <%= form.text_area :school, id: :syotum_school %>

    <div class="field">
    <%= form.label :seibetU %>
    <%= form.text_field :sex, id: :syotum_sex %>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

「index.html.erb」

<p id="notice"><%= notice %></p>

<h1>Syota</h1>

<table>
  <thead>
    <tr>
      <th>From</th>
      <th>Year</th>
      <th>School</th>
      <th>Seibetu</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @syota.each do |syotum| %>
      <tr>
        <td><%= syotum.from %></td>
        <td><%= syotum.year %></td>
        <td><%= syotum.school %></td>
        <td><%= syotum.sex %></td>
        <td><%= link_to 'Show', syotum %></td>
        <td><%= link_to 'Edit', edit_syotum_path(syotum) %></td>
        <td><%= link_to 'Destroy', syotum, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<%= link_to 'New Syotum', new_syotum_path %>

「syota_controller.rb」

class SyotaController < ApplicationController
  before_action :set_syotum, only: [:show, :edit, :update, :destroy]

  # GET /syota
  # GET /syota.json
  def index
    @syota = Syotum.all
  end

  # GET /syota/1
  # GET /syota/1.json
  def show
  end

  # GET /syota/new
  def new
    @syotum = Syotum.new
  end

  # GET /syota/1/edit
  def edit
  end

  # POST /syota
  # POST /syota.json
  def create
    @syotum = Syotum.new(syotum_params)

    respond_to do |format|
      if @syotum.save
        format.html { redirect_to @syotum, notice: 'Syotum was successfully created.' }
        format.json { render :show, status: :created, location: @syotum }
      else
        format.html { render :new }
        format.json { render json: @syotum.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /syota/1
  # PATCH/PUT /syota/1.json
  def update
    respond_to do |format|
      if @syotum.update(syotum_params)
        format.html { redirect_to @syotum, notice: 'Syotum was successfully updated.' }
        format.json { render :show, status: :ok, location: @syotum }
      else
        format.html { render :edit }
        format.json { render json: @syotum.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /syota/1
  # DELETE /syota/1.json
  def destroy
    @syotum.destroy
    respond_to do |format|
      format.html { redirect_to syota_url, notice: 'Syotum was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_syotum
      @syotum = Syotum.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def syotum_params
      params.require(:syotum).permit(:from, :year)
    end
end
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • gouf

    2017/11/09 20:01

    当該部分のView, Controller のコードは公開できますか?

    キャンセル

  • Syota

    2017/11/10 14:21

    回答して頂きありがとうございます! 畏まりました! 質問の編集を行い記載しますので確認の方、お願いしたいです!

    キャンセル

回答 1

checkベストアンサー

+2

こんにちは。入力する form のある .html.erb ファイルに submit ボタンがあるのが標準的な入力方法です。sumit ボタンをクリックして、SQLite のテーブルにレコードが入力される(入力した値が正当なものなら)ことになります。

scaffold で自動生成して、ソースコードを読むと良いとおもいます。この場合、form は、新規レコードと、更新レコードの共用になっており、かしこい submit が、どちらかを判断してくれます。

form は、form_for ではなく、form_with で作成されます。詳細は、私もしらない(笑)のですが、レコードの入力、更新に関しては、同じような感じです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/10 14:30

    回答して頂いてありがとうございます!
    なるほどです!
    submitボタンのデータをレコードに正しく反映されているのか確認する方法等があればご回答頂けると嬉しいです。
    お手数をおかけしてしまいますが、お願いします。

    キャンセル

  • 2017/11/10 15:13

    dbconsoleコマンドでDBに接続できます。
    https://railsguides.jp/command_line.html#rails-dbconsole

    # bundle exec rails dbconsole
    > select * from syotums;

    キャンセル

  • 2017/11/10 16:04

    回答ありがとうございました!
    解決いたしました!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    16440questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Ruby

    7679questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    7276questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。