Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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
如何将隐藏的输入传递给JavaScript_Javascript_Ruby On Rails_Ajax - Fatal编程技术网

如何将隐藏的输入传递给JavaScript

如何将隐藏的输入传递给JavaScript,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我对rails和javascript非常陌生。我有一个如下所示的表,我试图将项目id和所选类别传递给一个ajax调用,该调用将更新item.id的类别 问题是我似乎无法将正确的it.id传递给ajax调用。它传递的是第一个It.id,而不是我所选行上的那个。我已经有了这个工作,但我做了很多清理其他代码,它不再工作。我想我只是第一次做了一些幸运的事情,而不知道怎么做 <table class="table table-hover"> <tbody> <% @itemi

我对rails和javascript非常陌生。我有一个如下所示的表,我试图将项目id和所选类别传递给一个ajax调用,该调用将更新item.id的类别

问题是我似乎无法将正确的it.id传递给ajax调用。它传递的是第一个It.id,而不是我所选行上的那个。我已经有了这个工作,但我做了很多清理其他代码,它不再工作。我想我只是第一次做了一些幸运的事情,而不知道怎么做

<table class="table table-hover">
<tbody>
<% @itemised.each do |it| %>
<tr>
<td><%= it.date %> </td>
    <td><%= it.item  %></td>
    <td><%= number_to_currency(it.value, :unit => "$") %></td>
<td><form name="myform" action="" method="POST">
<input type="button" name="button" value="Submit"   onClick="singleItem(this.form)" >
<select name="list">
  <% @array_of_live_categories.each do |cats|  %>
     <option> <%= cats %> </option>
         <% end %>
      ## <option> <%= it.id %> </option>
</select>
<input type= "hidden" id="id" name="id" value= "<%= it.id %>">

</form>
</td>
我只是加入了,作为证明item.id确实存在的一种方式

下面是源代码的一部分,其中还有很多内容,但从中我可以看出,返回的值看起来是正确的。但是,当运行singleItem函数时,它会传递一个不同的值,即与表中第一个项关联的值

</tr>
</tbody>
<tr>
<td>15/01/2015 </td>
<td>J P &amp; Y P Mahaffy</td>
<td>$1,500.00</td>


<td><form name="myform" action="" method="POST">
<input type="hidden" id="id" name="id" value= "J P &amp; Y P Mahaffy">
<input type="button" name="button" value="Submit" onClick="singleItem(this.form)" >
<select name="list">
<option> bank fees </option>
<option> cash out </option>
<option> vehicle expenses </option>
<option> health </option>
<option> office expenses </option>
<option> income </option>
<option> entertainment </option>
<option> transfer </option>
<option> ird payment </option>
<option> unsorted </option>
<option> regular payment </option>
<option> interest </option>
<option> user a </option>
## <option> J P &amp; Y P Mahaffy </option>
</select>

</form>
</td>
任何帮助都将不胜感激


哈雷

也许你应该使用Rails隐藏标签

<%= hidden_field_tag 'itemId', it.id %>

希望这会对您有所帮助。

可能您应该使用Rails隐藏标签

<%= hidden_field_tag 'itemId', it.id %>
希望这对你有帮助

我似乎无法通过正确的it.id

这是因为您的选择没有值:

<option>bank fees</option>
#-> should be -> <option value="...">bank fees</option>
上述内容将允许您使用以下内容:

#app/assets/javascripts/application.js
$(document).on("submit", "form#category_form", function(e) {
  e.preventDefault(); 
  $id  = $(this).data("it-id");
  $cat = $(this).find("select#category_select").text();

  $.ajax({
    type: "POST",
    url: '/items/single_categorise',
    data: { id: $id, newcat: $cat},
  });
}
与主题无关,但您正在做的一个更简单的版本是对选择框使用数据远程选项:

这将只显示一个选择框,从中您希望发送的类别的id将作为params[:category][:id]发送到控制器。很遗憾,它不会发送it.id

我似乎无法通过正确的it.id

这是因为您的选择没有值:

<option>bank fees</option>
#-> should be -> <option value="...">bank fees</option>
上述内容将允许您使用以下内容:

#app/assets/javascripts/application.js
$(document).on("submit", "form#category_form", function(e) {
  e.preventDefault(); 
  $id  = $(this).data("it-id");
  $cat = $(this).find("select#category_select").text();

  $.ajax({
    type: "POST",
    url: '/items/single_categorise',
    data: { id: $id, newcat: $cat},
  });
}
与主题无关,但您正在做的一个更简单的版本是对选择框使用数据远程选项:


这将只显示一个选择框,从中您希望发送的类别的id将作为params[:category][:id]发送到控制器。不幸的是,它不会发送it.id

听起来你的页面上可能有重复的id。你仔细检查过这个了吗?您可以发布呈现标记的副本吗?您的意思是重复的item.id吗?是的,我确定我没有这些。听起来你的页面上可能有重复的ID。你仔细检查过这个了吗?您可以发布呈现标记的副本吗?您的意思是重复的item.id吗?是的,我肯定没有。谢谢你。这一行出现语法错误。好的,我认为只需要将其更改为it id=>it.id。Id现在被传递的很好。我从这个代码中得到了一些奇怪的参数。id是正确的,但是:newcat是所有选项的混合体{id=>Bnz Z3594 Zskyway,newcat=>b\nc\nv\nh\no\ni\ne\nt\ni\nu\nr\ni\nu,controller=>items,action=>single\u categorise}。它似乎是每个类别选项的第一个字母,前面有一个“n”。还有,为什么在代码中包含:first:first?得到一个结果-将JS更改为$cat=$this.find:selected.text;非常感谢你的帮助谢谢你。这一行出现语法错误。好的,我认为只需要将其更改为it id=>it.id。Id现在被传递的很好。我从这个代码中得到了一些奇怪的参数。id是正确的,但是:newcat是所有选项的混合体{id=>Bnz Z3594 Zskyway,newcat=>b\nc\nv\nh\no\ni\ne\nt\ni\nu\nr\ni\nu,controller=>items,action=>single\u categorise}。它似乎是每个类别选项的第一个字母,前面有一个“n”。还有,为什么在代码中包含:first:first?得到一个结果-将JS更改为$cat=$this.find:selected.text;非常感谢你的帮助
<%= collection_select :category, :id, Category.all, :id, :name, {}, {data: { remote: true, url: url_for(controller: :items, action: :single_categorise)}} %>