簡體   English   中英

Ruby on Rails,simple_form - 我想從 html select_tag 字段設置 simple_form 的隱藏字段

[英]Ruby on Rails, simple_form - I want to set a hidden field of the simple_form from a html select_tag field

我不確定這是否應該在 Java 腳本或 HTML 部分中完成。 我希望在 HTML 部分使用這樣的東西:

<%= f.hidden_field :skip_option, :value => "the_value_from_the_select_tag" %>

Java Script 中的有效解決方案也是可以接受的。

這是我的代碼:

<%= simple_form_for(@option) do |f| %>
  <%= f.error_notification %>
  <%= link_to 'Start assessments', url_for(controller: :assessments, action: :index), id: 'start_assessment' %>
  <%= select_tag "skip_option", options_for_select([ "Yes", "No" ], "No"), id: 'skip_option', onchange: "reason_picker()" %>
  <%= f.text_field :reason_for_skipping, id: 'reason_for_skipping' %>
  <%= f.button :submit, 'Save Option' %>
<% end %>

<script type="text/javascript">
  $(document).ready (
    window.reason_picker = function () {
      var selected = document.getElementById("skip_option").selectedIndex;
      if (selected == 0) {
        $("#reason_for_skipping").show();
        $("#start_assessment").hide();
      }
      else {
        $("#reason_for_skipping").hide();
        $("#start_assessment").show();
      }
    }
  );
</script>

不知道如何將 select_tag 中的值分配給隱藏的表單字段。

隱藏字段的行為與其他表單輸入一樣,因此應該可以:

$("#id_of_hidden_field").val($("#skip_option").val());

這是基於我收到的提示的完整工作代碼。 需要進行一些更改。 一些元素被重命名以防止 ID 沖突,並引入了一個新的隱藏元素。 同樣在模型類中,使用了一種將空字符串轉換為數據庫 NULL 值的方法。

這是文件_form.html.erb

<%= simple_form_for(@option) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">

    <table>
      <thead>
        <th>Action</th>
        <th>Skip</th>
        <th>Reason for skipping</th>
      </thead>
      <tbody>
        <tr>
          <td>
            <%= link_to 'Start assessments', url_for(controller: :assessments, action: :index), id: 'start_assessment' %>
          </td>
          <td>
            <%= f.hidden_field :skip_option %>
            <%= select_tag "html_skip_option", options_for_select([ "Yes", "No" ], :selected => f.object.skip_option), id: 'html_skip_option', onchange: "reason_picker()" %>
          </td>
          <td>
            <%= f.text_field :reason_for_skipping, id: 'reason_for_skipping' %>
          </td>
        </tr>
      </tbody>
    </table>

  </div>

  <div class="form-actions">
    <%= f.button :submit, 'Save Option' %>
  </div>
<% end %>

<script type="text/javascript">
  $(document).ready (
    window.reason_picker = function () {
      var selected = document.getElementById("html_skip_option").selectedIndex;
      if (selected == 0) {
        $("#reason_for_skipping").show();
        $("#start_assessment").hide();
      }
      else {
        $("#reason_for_skipping").hide();
        $("#start_assessment").show();
      }
      $("#option_skip_option").val($("#html_skip_option").val());
      if ($("#option_skip_option").val() != "Yes") {
        $("#reason_for_skipping").val("");
      }
    }
  );
</script>

這是模型文件option.rb

class Option < ActiveRecord::Base
  before_save :normalize

  def normalize
    self.reason_for_skipping = nil unless skip_option == "Yes"
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM