从呈现rails部分对象创建jquery html对象
我正在构建一个rails应用程序,并使用datatables.net显示一些可以通过AJAX添加/删除的数据 我有一个rails部分,应该呈现并随后添加到datatable中:从呈现rails部分对象创建jquery html对象,jquery,ruby-on-rails,datatables,Jquery,Ruby On Rails,Datatables,我正在构建一个rails应用程序,并使用datatables.net显示一些可以通过AJAX添加/删除的数据 我有一个rails部分,应该呈现并随后添加到datatable中: <tr id="<%= "device-" + device.id.to_s %>"> <td class="device-id"><%= device.id %></td> <td class="device-devicetype-name"&g
<tr id="<%= "device-" + device.id.to_s %>">
<td class="device-id"><%= device.id %></td>
<td class="device-devicetype-name"><%= device.device_type.name %></td>
<td class="device-serial"><%= device.serial %></td>
<td class="device-bought"><%= device.bought %></td>
<td class="device-remarks"><%= device.remarks %></td>
<td class="device-actions">
<% if can? :manage, Rental %>
<%= form_for(@rental.device_rentals.build, remote: true) do |f| %>
<%= hidden_field_tag :device_id, device.id %>
<%= hidden_field_tag :rental_id, @rental.id %>
<%= button_tag(type: 'submit', class: "btn btn-primary") do %>
<span class="glyphicon glyphicon-plus-sign"></span>
<% end %>
<% end %>
<% end %>
</td>
</tr>
编辑:这是JS行在响应中呈现的内容:
availableDevicesList.row.add($("\"\\u003ctr id=\\\"device-3\\\"\\u003e\\n \\u003ctd class=\\\"device-id\\\"\\u003e3\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-devicetype-name\\\"\\u003eBlack Case\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-serial\\\"\\u003eCASE0001\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-bought\\\"\\u003e01.12.2015\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-remarks\\\"\\u003eMaserati sticker\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-actions\\\"\\u003e\\n \\u003cform class=\\\"new_device_rental\\\" id=\\\"new_device_rental\\\" action=\\\"/device_rentals\\\" accept-charset=\\\"UTF-8\\\" data-remote=\\\"true\\\" method=\\\"post\\\"\\u003e\\u003cinput name=\\\"utf8\\\" type=\\\"hidden\\\" value=\\\"\\u0026#x2713;\\\" /\\u003e\\u003cinput type=\\\"hidden\\\" name=\\\"authenticity_token\\\" value=\\\"aiu/5qq8UVfPSCTvq3+VRsnXxwJS9agJuPIZTH1HXd3Y+ocFG7IhgB99P1UnTKfrhusw/vcO6vhSMnreDiVOSg==\\\" /\\u003e\\n \\u003cinput type=\\\"hidden\\\" name=\\\"device_id\\\" id=\\\"device_id\\\" value=\\\"3\\\" /\\u003e\\n \\u003cinput type=\\\"hidden\\\" name=\\\"rental_id\\\" id=\\\"rental_id\\\" value=\\\"1\\\" /\\u003e\\n \\u003cbutton name=\\\"button\\\" type=\\\"submit\\\" class=\\\"btn btn-primary\\\"\\u003e\\n \\u003cspan class=\\\"glyphicon glyphicon-plus-sign\\\"\\u003e\\u003c/span\\u003e\\n\\u003c/button\\u003e\\u003c/form\\u003e \\u003c/td\\u003e\\n\\u003c/tr\\u003e\"")).draw();
更新:我解决了这个问题,stackoverflow上的另一个问题指出这个错误可能是字符串编码的问题。通过调整我在那里找到的解决方案,我得出了以下结论:
var deviceTableRow = "";
deviceTableRow += "<%= escape_javascript render('devices/rental_devices_table_row', :device => @device) %>";
rentalDevicesList.row.add($(deviceTableRow)).draw();
var-deviceTableRow=“”;
deviceTableRow+=“@device)%>”;
rentalDeviceList.row.add($(deviceTableRow)).draw();
这有帮助吗
@Abhi没有,它仍然失败。我在问题中添加了JS响应中的行。
availableDevicesList.row.add($("\"\\u003ctr id=\\\"device-3\\\"\\u003e\\n \\u003ctd class=\\\"device-id\\\"\\u003e3\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-devicetype-name\\\"\\u003eBlack Case\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-serial\\\"\\u003eCASE0001\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-bought\\\"\\u003e01.12.2015\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-remarks\\\"\\u003eMaserati sticker\\u003c/td\\u003e\\n \\u003ctd class=\\\"device-actions\\\"\\u003e\\n \\u003cform class=\\\"new_device_rental\\\" id=\\\"new_device_rental\\\" action=\\\"/device_rentals\\\" accept-charset=\\\"UTF-8\\\" data-remote=\\\"true\\\" method=\\\"post\\\"\\u003e\\u003cinput name=\\\"utf8\\\" type=\\\"hidden\\\" value=\\\"\\u0026#x2713;\\\" /\\u003e\\u003cinput type=\\\"hidden\\\" name=\\\"authenticity_token\\\" value=\\\"aiu/5qq8UVfPSCTvq3+VRsnXxwJS9agJuPIZTH1HXd3Y+ocFG7IhgB99P1UnTKfrhusw/vcO6vhSMnreDiVOSg==\\\" /\\u003e\\n \\u003cinput type=\\\"hidden\\\" name=\\\"device_id\\\" id=\\\"device_id\\\" value=\\\"3\\\" /\\u003e\\n \\u003cinput type=\\\"hidden\\\" name=\\\"rental_id\\\" id=\\\"rental_id\\\" value=\\\"1\\\" /\\u003e\\n \\u003cbutton name=\\\"button\\\" type=\\\"submit\\\" class=\\\"btn btn-primary\\\"\\u003e\\n \\u003cspan class=\\\"glyphicon glyphicon-plus-sign\\\"\\u003e\\u003c/span\\u003e\\n\\u003c/button\\u003e\\u003c/form\\u003e \\u003c/td\\u003e\\n\\u003c/tr\\u003e\"")).draw();
var deviceTableRow = "";
deviceTableRow += "<%= escape_javascript render('devices/rental_devices_table_row', :device => @device) %>";
rentalDevicesList.row.add($(deviceTableRow)).draw();