0
所以我有两个模型。设施和可用性。每个设施都有很多可用性。在我的设施页面上,我有一个部分列出了当前设施的所有可用性。刷新或更新部分
我试图允许在可用性上的CRUD操作。删除工作正常,我通过ajax并使用jquery删除表中的行。
我在创建和更新时遇到问题。我可以远程执行这些操作,但是在不重新加载页面的情况下反映更改已被阻止。
这是部分看起来like:
<tbody class="availabilityContainer">
<% facility_availabilities?.each do |a|%>
<tr id="availability_<%= a.id %>">
<td id="date_<%= a.id %>"><%= a.start_time.strftime("%a, %b %d %Y") %></td>
<td id="time_<%= a.id %>"><%= a.start_time.strftime("%I:%M %p") %> - <%= a.end_time.strftime("%I:%M %p") %></td>
<td id="price_<%= a.id %>"><%= number_to_currency a.price %></td>
<td id="discount_<%= a.id %>"><%= number_to_percentage a.discount, precision: 0 %></td>
<td>
<!-- Purchase button -->
<%= link_to("<i class='fa fa-shopping-cart'></i>".html_safe, "#", class:"btn btn-xs btn-success") %>
<!-- Edit button -->
<!-- <button type="button" class="btn btn-xs btn-primary" data-toggle="modal" data-target="#editAvailability"><i class='fa fa-pencil'></i></button> -->
<%= link_to("<i class='fa fa-pencil'></i>".html_safe, edit_availability_path(a.id) , class:"btn btn-xs btn-primary", data:{toggle:"modal", target:"#editAvailability"}, remote: true) %>
<!-- Delete button -->
<%= link_to("<i class='fa fa-times'></i>".html_safe, availability_path(a.id), method: :delete, class:"btn btn-xs btn-danger", remote: true) %>
</td>
</tr>
<!-- Load Edit Availability Form -->
<div class="modal fade" id="editAvailability" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"></div>
<% end %>
</tbody>
我尝试了一些东西在JS:
// Hide modal on update
$("#editAvailability").modal("hide");
// Update view
$("#availability_<%= @availability.id %>").fadeOut(500,function(){
currentItem = $(this)
// Get the new object from the database (should just get it from the form but i'm committed now)
$.get('/availabilities/<%= @availability.id %>', function (data){
// Append new data to table or refresh partial somehow
}).done(function() {
// update the individual row and fade back in?
$("#availability_<%= @availability.id %>").fadeIn(500)
})
});
如果每个单元格的“td”都有一个id,那么编辑这些单元格的innerHtml会更简单而不是创建一个新的行?我问,因为每行都有很多按钮代码,我不想通过jQuery创建 – Batman
我写过关于“创建”操作。正如我所理解的那样,你在这种情况下创造新的行,对吧? 关于更新 - '$(“#td_id”)。html(“new content”)'应该工作 – Cyrill
是的,我需要创建和更新,所以你的答案是有道理的。我有一个问题,如果我做这样的'$(“td#date _ <%= @ availability.id%>”)。html(“<%= @ availability.start_time.strftime('%a, %b%d%Y')%>“)'我得到错误:'未捕获的错误:语法错误,无法识别的表达式:#availability_ <%= @ availability.id%>' – Batman