栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

复选标记消失的奥秘

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

复选标记消失的奥秘

好吧,追踪到这个讨厌的人!

问题出在您生成的HTML中。事实证明,有问题的最终以AJAX调用…无效的URL(导致

404
)!

show视图中 ,您具有以下代码:

<% if @habit.current_level_strike %>   <div  id="red"> <label id="<%= @habit.id %>" >Strikes:</label><% else %>   <div  id="gold"> <label id="<%= @habit.id %>" >Strikes:</label><% end %><!-- [...] --><% if @habit.current_level_strike %>   <label id="<%= level.id %>" >Level <%= index + 1 %>:</label> <% else %>   <label id="<%= level.id %>" >Level <%= index + 1 %>:</label> <% end %>

为什么会有问题?那么,在你的Javascript,你依靠的确切类

.habit-id
.level-id

habit = $(this).parent().siblings(".habit-id").first().attr("id");level = $(this).siblings(".level-id").first().attr("id");

虽然根据 show view的 HTML 来看 ,有时会生成适当的类,有时会有些带有

*-two
habit-id-two
level-id-two
)附录的类。

如果您尝试固定类名,那么它们的格式都与您的Javascript(

.siblings(".habit-id")
.siblings(".level-id")
)期望的形式相同,则问题将消失。

更好的解决方案 (是的,可以稍微简化一下;))

如果我们 预先生成 网址,并以如下方式在HTML中进行设置,该怎么办:

<div >  <!-- [...] -->    <% @habit.levels.each_with_index do |level, index| %>      <% if @habit.current_level >= (index + 1) %>        <p data-submit-url="<%= habit_level_days_missed_index_path({ habit_id: @habit.id, level_id: level.id }) %>"data-delete-url="<%= habit_level_days_missed_path({ habit_id: @habit.id, level_id: level.id, id: 1 }) %>">          <!-- [...] -->        </p>      <% end %>    <% end %>  </div></div>

然后,您的Javascript可以简化为:

$(document).on("page:change", function() {  $(".habit-check").change(function()  {    var submitUrl = $(this).parents("p").data("submit-url");    var deleteUrl = $(this).parents("p").data("delete-url");    if($(this).is(":checked"))    {       $.ajax(       {         url: submitUrl,         method: "POST"       });    }    else    {       $.ajax(       {         url: deleteUrl,         method: "DELETE"       });    }  });});

请注意,在生成 delete-url时 ,我在中使用了的硬编码值

id
,该值是
1
(试图重现您的原始行为):

data-delete-url="<%= habit_level_days_missed_path({ habit_id: @habit.id, level_id: level.id, id: 1 }) %>"

对应于:

url: "/habits/" + habit + "/levels/" + level + "/days_missed/1"

在您的代码中。您是否 100% 确定这就是您想要的?

希望有帮助!如果您有任何疑问,我们非常乐于提供帮助/解释!

祝好运!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437004.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号