【초보자용】 미리 등록한 데이터를, 선택 커맨드로 입력 폼에 자동 입력시키고 싶다

곤란한 일


  • 풀다운에 미리 등록 된 데이터를 설정하고 선택하면 양식에 자동으로 입력하고 싶었습니다.
  • 여러 가지 기사를 시도했지만 양식 도우미를 사용하면 잘 작동하지 않는 방법이 많았습니다
  • 양식 도우미를 중지하는 것과 같은 방법도 있었지만 보안을 위해 양식 도우미를 사용할 수있는 것이 바람직하다고 생각했습니다.

    하고 싶은 일


  • 미리 병아리가되는 데이터를 등록해 둔다
  • 선택 명령으로 선택하면 입력 양식에 자동으로 입력됩니다.
  • 단순한 템플릿이 아니라 등록시 숫자를 변경할 수 있습니다.

    개발 환경


    ruby '2.6.6'
    gem 'rails', '~> 6.0.3', '>= 6.0.3.3'
    

    구현 내용


  • undone_action 모델 (컬럼은 action_name 및 default_time)에 데이터가 미리 등록되어 있습니다.
  • undone_actions를 선택 상자에 설정
  • 선택 상자를 선택하면 이벤트가 발생하고 입력 양식의 savings_name 및 earned_time에 값이 들어갑니다.

    new.html.erb
    <%= form_with(model: @savings_record, local: true) do |f| %>
      <div class="form-group>
        <label>My 不要行動</label>
        <select multiple id="my_undone_action" class="form-control" onChange='auto_input()'>
          <option disabled selected value>Choose...</option>
          <% current_user.undone_actions.each do |undone_action| %>
            <option value= "<%= undone_action.action_name %>&<%= undone_action.default_time %>"><%= undone_action.action_name %></option>
          <% end %>
        </select>
      </div>
    
      <div class="form-group">
        <%= f.label :savings_name, "不要行動" %>
        <%= f.text_field :savings_name, autofocus: true %>
      </div>
    
      <div class="form-group">
        <%= f.label :earned_time, "所要時間(分)" %>
        <%= f.number_field :earned_time, autofocus: true %>
      </div>
    
      <div class="actions">
        <%= f.submit "貯金する" %>
      </div>
    <% end %>
    
    <script>
      var auto_input = function () {
        var element = document.getElementById("my_undone_action");
        document.getElementById("savings_record_savings_name").value = element.value.split("&")[0];
        document.getElementById("savings_record_earned_time").value = element.value.split("&")[1];
      }
    </script>
    

    완성형



    선택 명령, 클릭 전





    선택 명령, 클릭 후





    마지막으로



    web계 기업에 전직을 목표로, 포트폴리오 작성중에 망설인 포인트를 투고했습니다. 같은 고민을 가진 누군가의 도움이되면 다행입니다.
  • 좋은 웹페이지 즐겨찾기