form_withでプルダウンメニューの作成方法

受付中

回答 0

投稿

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

tacty

score 1

前提・実現したいこと

勉強した時間をプルダウンメニュから選択しDBに数値を登録する処理を作成したいのだが
viewでプルダウンメニューの記述を省略して記述したい。

new.html.erb

<div class="wrapper">
  <div class="container">
    <h1 class="my-5 w-25 mx-auto text-center border-bottom">新規投稿</h1>
    <%= form_with model: @post, local: true do | f | %>
    <p class="mb-4 w-50 mx-auto text-muted">学習した言語の時間を入力してください</p>
    <div class="d-flex flex-wrap w-50 mx-auto justify-content-between">
      <div class="form-group">
        <%= f.label :html, 'HTML'%>
        <%= f.select :html, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :css, 'CSS'%>
        <%= f.select :css, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :javascript, 'JavaScript'%>
        <%= f.select :javascript, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :jquery, 'jQuery'%>
        <%= f.select :jquery, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :ruby, 'Ruby'%>
        <%= f.select :ruby, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :rails, 'Rails'%>
        <%= f.select :rails, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :php, 'PHP'%>
        <%= f.select :php, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :java, 'Java'%>
        <%= f.select :java, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :go, 'Go'%>
        <%= f.select :go, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :python, 'Python'%>
        <%= f.select :python, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
      <div class="form-group">
        <%= f.label :swift, 'Swift'%>
        <%= f.select :swift, [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24]] %>
      </div>
    </div>
    <div class="form-group w-50 mx-auto">
      <%= f.label :content, '学習内容(140字以内で入力してください)', class: 'p-1 text-muted'%>
      <%= f.text_area :content, rows: 5, class: 'form-control' %>
    </div>
    <div class="d-flex w-50 mx-auto">
      <div class="w-50">
        <%= link_to '戻る', :back, class: 'text-dark p-1'%>
      </div>
      <div class="w-50 mx-auto text-right">
        <%= f.submit '登録', class: 'btn btn-primary px-4' %>
      </div>
    </div>
    <% end %>
  </div>
  <%= render partial: 'home/footer' %>
</div>

修正したい箇所

現状はベタがきで1から24までの数値を用意しているがループ処理などで記述し、コードの省略を行いたい。

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

まだ回答がついていません

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

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