Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery未设置Rails 5.2隐藏的\u字段值_Jquery_Ruby On Rails - Fatal编程技术网

JQuery未设置Rails 5.2隐藏的\u字段值

JQuery未设置Rails 5.2隐藏的\u字段值,jquery,ruby-on-rails,Jquery,Ruby On Rails,我在Rails 5.2 simple_表单中有一个相当简单的设置,JQuery应该根据单击选择器div的位置设置一个隐藏的_字段。html/erb如下所示: <%= simple_form_for(@source) do |f| %> ... <div class="row justify-content-center"> <div id="selector-journal" class="selector active"&g

我在Rails 5.2 simple_表单中有一个相当简单的设置,JQuery应该根据单击选择器div的位置设置一个隐藏的_字段。html/erb如下所示:

<%= simple_form_for(@source) do |f| %>
  ...
        <div class="row justify-content-center">
          <div id="selector-journal" class="selector active">Journal Article</div>
          <div id="selector-book" class="selector">Book</div>
          <div id="selector-website" class="selector">Website</div>
          <%= f.hidden_field :source_type, id: "source" %>
        </div> <!-- row -->
...
<% end %>
<script>
  $(document).ready(function() {
    $('.mdb-select').materialSelect();
    $('.datepicker').pickadate();
    tinymce.init({
      selector: "textarea",  // change this value according to your HTML
      plugins: "code",
      toolbar: "code",
      menubar: "tools"
    });

    if ($("#source").val("") ) {
      $('.selector').removeClass("active");
    };

    if ($("#source").val( "Journal") ){
      $('#selector-journal').addClass("active");
    } else if ($("#source").val( "Book") ){
      $('#selector-book').addClass("active");
    } else if ($("#source").val( "Website") ){
      $('#selector-website').addClass("active");
    }

    $('#selector-journal').click(function(){
      $('.selector').removeClass("active");
      $('#selector-journal').addClass("active");
      $('.source-info-section').addClass("hidden");
      $('#journal-info').removeClass("hidden");
      $('#source').val("Journal");
    });
    $('#selector-book').click(function(){
      $('.selector').removeClass("active");
      $('#selector-book').addClass("active");
      $('.source-info-section').addClass("hidden");
      $('#book-info').removeClass("hidden");
      $('#source').val("Book");
    });
    $('#selector-website').click(function(){
      $('.selector').removeClass("active");
      $('#selector-website').addClass("active");
      $('.source-info-section').addClass("hidden");
      $('#website-info').removeClass("hidden");
      $('#source').val("Website");
    });
  });
</script>
JQuery如下所示:

<%= simple_form_for(@source) do |f| %>
  ...
        <div class="row justify-content-center">
          <div id="selector-journal" class="selector active">Journal Article</div>
          <div id="selector-book" class="selector">Book</div>
          <div id="selector-website" class="selector">Website</div>
          <%= f.hidden_field :source_type, id: "source" %>
        </div> <!-- row -->
...
<% end %>
<script>
  $(document).ready(function() {
    $('.mdb-select').materialSelect();
    $('.datepicker').pickadate();
    tinymce.init({
      selector: "textarea",  // change this value according to your HTML
      plugins: "code",
      toolbar: "code",
      menubar: "tools"
    });

    if ($("#source").val("") ) {
      $('.selector').removeClass("active");
    };

    if ($("#source").val( "Journal") ){
      $('#selector-journal').addClass("active");
    } else if ($("#source").val( "Book") ){
      $('#selector-book').addClass("active");
    } else if ($("#source").val( "Website") ){
      $('#selector-website').addClass("active");
    }

    $('#selector-journal').click(function(){
      $('.selector').removeClass("active");
      $('#selector-journal').addClass("active");
      $('.source-info-section').addClass("hidden");
      $('#journal-info').removeClass("hidden");
      $('#source').val("Journal");
    });
    $('#selector-book').click(function(){
      $('.selector').removeClass("active");
      $('#selector-book').addClass("active");
      $('.source-info-section').addClass("hidden");
      $('#book-info').removeClass("hidden");
      $('#source').val("Book");
    });
    $('#selector-website').click(function(){
      $('.selector').removeClass("active");
      $('#selector-website').addClass("active");
      $('.source-info-section').addClass("hidden");
      $('#website-info').removeClass("hidden");
      $('#source').val("Website");
    });
  });
</script>
我在谷歌控制台中进行了检查,出现了value一词,但从未真正得到值。保存记录时,“源类型”字段保持空白


有人知道我做错了什么吗?

您可能需要使用$document。在'turbolinks:load'上,函数{……您试过了吗?您可能还需要同时使用turbolinks和常规ready,就像这个$document。在'ready turbolinks:load'上,函数{…我已从我的应用程序中删除TurboLink@rockwellrice@rockwellrice我知道它运行正常,因为每当单击div时,活动类都会被添加和删除。对不起,还有一个问题需要验证,当提交时,您可以看到发送过来的参数中的source_类型为空,对吗?我是在问bee因为jquery看起来是正确的,我想验证它不是像控制器中被白名单列出的遗漏参数之类的东西。@RockwellRice是的,source_type=>就在服务器日志中。