- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Rails 4 表单,它在表单页面上使用 AJAX 构建部件列表。一旦在 <ul>
中构建了零件列表,我想将列表作为 params 哈希中的参数值数组提交。
我的表格:
<%= form_for ([@tool, @service]),:html => { :onSubmit => 'getParts' } do |f| %>
<% if @service.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@service.errors.count, "error") %> prohibited this service from being saved:</h2>
<ul>
<% @service.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="row">
<div class="span4 offset1">
<div class="form-inline">
<%= f.hidden_field :tool_id , :value=>params[:tool_id] %>
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<br>
<br>
<div class="form-inline">
<%= f.label :due_date %><br>
<%= f.text_field :due_date, 'data-behaviour' => 'datepicker' %>
</div>
<br>
<br>
<div class="form-inline">
<%= f.label :completed %><br>
<%= f.text_field :completed, 'data-behaviour' => 'datepicker' %>
</div>
<br>
<div class="field">
<%= f.label 'Service Type:' %>
<%= f.select :service_type_id, ServiceType.all.collect{|s| [s.name, s.id] }, {include_blank: false} %>
</div>
<br>
</div>
<div class="span7">
<div class="form-inline">
<div class="part_list_element">
Parts Used <br>
<%= text_field_tag :parts_used %>
</div>
</div>
<br>
Default Parts:
<ul id="serv_parts_list">
</ul>
<br>
<br>
<div class="form-inline">
<%= f.label :note %><br>
<%= f.text_area :note %>
</div>
<br>
<br>
<div class="actions">
<%= f.submit %>
</div>
</div>
</div>
<% end %>
当用户从选择列表中选择默认服务时,将触发以下 JavaScript:
$('#service_service_type_id').change(function() {
var id = this.value;
$.ajax
({
url:'/get_default_parts',
type:"POST",
data: {
service_type: {
id: id
}
}
});
});
这会根据选择从数据库获取零件列表。然后它通过 JS 返回一个数组,然后将其附加到空的默认部件列表中:
Default Parts:
<ul id="serv_parts_list">
</ul>
变成:
<ul id="serv_parts_list">
<li id="042511060272">042511060272 - Stihl/Denso Spark Plug W22mp-u<a class="service_parts"><-Remove</a></li>
<li id="795711145835">795711145835 - Bar Oil - Stihl<a class="service_parts"><-Remove</a></li>
<li id="795711478179">795711478179 - Stihl MS660/066 Air Filter<a class="service_parts"><-Remove</a></li>
</ul>
在我的application.js中,我有:
$(document).ready(function(){
$("#commit").click(function() {
$("#expended_parts").val(('#serv_parts_list').text());
});
});
但这没有任何作用。我一直在试图弄清楚如何获得 <li>
<ul>
中的元素放入数组并作为参数传递。但当前的 params 哈希看起来像:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"s/....=", "service"=>
{"tool_id"=>"113", "name"=>"test without hash", "due_date"=>"", "completed"=>"",
"service_type_id"=>"2", "note"=>""}, "parts_used"=>"", "commit"=>"Create Service"}
由于部件列表在页面加载后可以多次更新,可以通过 AJAX 调用获取附加到 <li>
的默认部件列表。 ,我认为这必须绑定(bind)到 submit
事件。任何帮助表示赞赏。
最佳答案
我想得太多了,找到了一个更简单的答案。我已经很久没有从事这方面的工作了,所以我不得不回顾我的工作来刷新我的内存。
基本上,我有构建插入默认部分的 Javascript 和添加为复选框列表的任何部分,并且其框已被选中。这样,如果用户决定不需要默认部分之一,或者想要删除某个部分,他们只需取消选中该框即可,并且不会随表单一起提交。空复选框列表以上面所示的形式开始,如下所示:
Default Parts:<br>
<div id="default_parts_list" class="checkbox inline">
</div>
<br>
Other Parts:<br>
<div id="parts_expended" class="checkbox inline">
</div>
<br>
<br>
当表单上的服务类型下拉列表发生更改时,它会触发我上面的问题中显示的 JavaScript。这会获取零件列表并将其交给此 JS:
$("#default_parts_list").empty();
$("#default_parts_list").append('<%= escape_javascript(render :partial => 'get_default_parts' ) %>');
从而呈现 _get_default_parts 部分:
<%= collection_check_boxes(:service, :part_ids, @parts_list, :id, :sku_name, {}, {checked: true}) do |b| %>
<%= b.label { b.check_box + b.object.name + " " + b.object.sku} %>
<% end %>
这将创建附加到表单的 html,如下所示:
<div id="default_parts_list" class="checkbox inline">
<label for="service_part_ids_14">
<input checked="checked" id="service_part_ids_14" name="service[part_ids][]" type="checkbox" value="14">Stihl/Denso Spark Plug W22mp-u 042511060272
</label>
<label for="service_part_ids_24">
<input checked="checked" id="service_part_ids_24" name="service[part_ids][]" type="checkbox" value="24">Bar Oil - Stihl 795711145835
</label>
<label for="service_part_ids_10">
<input checked="checked" id="service_part_ids_10" name="service[part_ids][]" type="checkbox" value="10">Stihl MS660/066 Air Filter 795711478179
</label>
<input name="service[part_ids][]" type="hidden" value="">
</div>
所以它们只是普通的旧复选框,最终与表单一起提交,并最终出现在 params 哈希中,如下所示:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"IHXcV0H8NnySxGIBXi8ZA=",
"service"=>{"tool_id"=>"121", "name"=>"refresher", "due_date"=>"2014-12-27",
"completed"=>"2014-12-27", "service_type_id"=>"2",
"part_ids"=>["14", "24", "10", ""], "note"=>""}, "parts_used"=>"",
"commit"=>"Create Service", "tool_id"=>"121"}
当使用相同的表单来编辑和退出服务时,它必须使用不同的表单而不是上面的部分表单。编辑表单如下所示:
<h1>Editing service for <%=" #{@tool.category.name.singularize} / #{@tool.serial}" %></h1>
<%= form_for ([@tool, @service]) do |f| %>
<% if @service.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@service.errors.count, "error") %> prohibited this service from being saved:</h2>
<ul>
<% @service.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="row">
<div class="span4 offset1">
<div class="form-inline">
<%= f.hidden_field :tool_id , :value=>params[:tool_id] %>
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<br>
<br>
<div class="form-inline">
<%= f.label :due_date %><br>
<%= f.text_field :due_date, 'data-behaviour' => 'datepicker' %>
</div>
<br>
<br>
<div class="form-inline">
<%= f.label :completed %><br>
<%= f.text_field :completed, 'data-behaviour' => 'datepicker' %>
</div>
<br>
<div class="field">
<%= f.label 'Service Type:' %>
<%= f.select :service_type_id, ServiceType.all.collect{|s| [s.name, s.id] }, {include_blank: false} %>
</div>
<br>
</div>
<div class="span7">
<div class="form-inline">
<div class="part_list_element">
Parts Used <br>
<%= text_field_tag :parts_used %>
</div>
</div>
<br>
<strong class="alert-danger">Any parts that get unchecked here will be returned to inventory</strong><br>
<b>Parts Used:</b> <br>
<div id="parts_used_list" class="checkbox inline">
<%= f.collection_check_boxes :part_ids, @service.parts, :id, :name %>
</div>
<br>
<b>Other Parts:</b> <br>
<div id="parts_expended" class="checkbox inline">
</div>
<br>
<br>
<div class="form-inline">
<%= f.label :note %><br>
<%= f.text_area :note %>
</div>
<br>
<br>
<div class="actions">
<%= f.submit %>
</div>
</div>
</div>
<% end %>
我希望这可以帮助任何做类似事情的人。您可以在 github 上查看完整的源应用程序: EquipDB on github.com
关于javascript - 以 Rails 4 形式将 <ul> 列表作为参数数组提交,使用 javascript 将 params 值添加到 params 哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21896632/
我正在尝试创建一个包含 int[][] 项的数组 即 int version0Indexes[][4] = { {1,2,3,4}, {5,6,7,8} }; int version1Indexes[
我有一个整数数组: private int array[]; 如果我还有一个名为 add 的方法,那么以下有什么区别: public void add(int value) { array[va
当您尝试在 JavaScript 中将一个数组添加到另一个数组时,它会将其转换为一个字符串。通常,当以另一种语言执行此操作时,列表会合并。 JavaScript [1, 2] + [3, 4] = "
根据我正在阅读的教程,如果您想创建一个包含 5 列和 3 行的表格来表示这样的数据... 45 4 34 99 56 3 23 99 43 2 1 1 0 43 67 ...它说你可以使用下
我通常使用 python 编写脚本/程序,但最近开始使用 JavaScript 进行编程,并且在使用数组时遇到了一些问题。 在 python 中,当我创建一个数组并使用 for x in y 时,我得
我有一个这样的数组: temp = [ 'data1', ['data1_a','data1_b'], ['data2_a','data2_b','data2_c'] ]; // 我想使用 toStr
rent_property (table name) id fullName propertyName 1 A House Name1 2 B
这个问题在这里已经有了答案: 关闭13年前。 Possible Duplicate: In C arrays why is this true? a[5] == 5[a] array[index] 和
使用 Excel 2013。经过多年的寻找和适应,我的第一篇文章。 我正在尝试将当前 App 用户(即“John Smith”)与他的电子邮件地址“jsmith@work.com”进行匹配。 使用两个
当仅在一个边距上操作时,apply 似乎不会重新组装 3D 数组。考虑: arr 1),但对我来说仍然很奇怪,如果一个函数返回一个具有尺寸的对象,那么它们基本上会被忽略。 最佳答案 这是一个不太理
我有一个包含 GPS 坐标的 MySQL 数据库。这是我检索坐标的部分 PHP 代码; $sql = "SELECT lat, lon FROM gps_data"; $stmt=$db->query
我需要找到一种方法来执行这个操作,我有一个形状数组 [批量大小, 150, 1] 代表 batch_size 整数序列,每个序列有 150 个元素长,但在每个序列中都有很多添加的零,以使所有序列具有相
我必须通过 url 中的 json 获取文本。 层次结构如下: 对象>数组>对象>数组>对象。 我想用这段代码获取文本。但是我收到错误 :org.json.JSONException: No valu
enter code here- (void)viewDidLoad { NSMutableArray *imageViewArray= [[NSMutableArray alloc] init];
知道如何对二维字符串数组执行修剪操作,例如使用 Java 流 API 进行 3x3 并将其收集回相同维度的 3x3 数组? 重点是避免使用显式的 for 循环。 当前的解决方案只是简单地执行一个 fo
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有来自 ASP.NET Web 服务的以下 XML 输出: 1710 1711 1712 1713
如果我有一个对象todo作为您状态的一部分,并且该对象包含数组列表,则列表内部有对象,在这些对象内部还有另一个数组listItems。如何更新数组 listItems 中 id 为“poi098”的对
我想将最大长度为 8 的 bool 数组打包成一个字节,通过网络发送它,然后将其解压回 bool 数组。已经在这里尝试了一些解决方案,但没有用。我正在使用单声道。 我制作了 BitArray,然后尝试
我们的数据库中有这个字段指示一周中的每一天的真/假标志,如下所示:'1111110' 我需要将此值转换为 boolean 数组。 为此,我编写了以下代码: char[] freqs = weekday
我是一名优秀的程序员,十分优秀!