在我的Rails应用程序上显示div的一部分的切换操作仅在我刷新页面时才有效。如果我点击指向该页面的链接,则所有切换都已打开,并且不会对点击做出反应。任何帮助将不胜感激!此外,如果有人有关于如何使用Capybara进行测试的提示,那就太棒了。
这在我的app / assets / javascripts
中$(document).ready(function(){
$(".donation-time").hide()
$(".donation-candidate").on("click", function(event){
$(this).siblings().first().toggle();
$("span", this).toggleClass("glyphicon-chevron-right glyphicon-chevron-down");
})
})
这是我对所使用视图的偏爱,而且它是完全打开且可见的部分,而不是在点击页面后可见的.donation候选者。
<div class="donation-candidate">
<h3><span class="glyphicon glyphicon-chevron-right"></span> <%= candidate_issue.name %></h3>
<div style="margin-left: 32px;"><h4><%= candidate_issue.stance %></h4></div>
</div>
<div class="donation-time">
<div style="margin-left: 32px;">
<%= form_for Donation.new, url: donations_path do |f| %>
<%= f.label :amount %>
<%= f.hidden_field :candidate_issue_id, value: candidate_issue.id %>
<%= f.number_field :amount, in: 1.0..2700.0, step: 1.0 %>
<%= f.hidden_field :issue_id, value: candidate_issue.issue_id %>
<%= f.submit "Donate" %>
<% end %>
</div>
</div>
第一次使用jquery或javascript,所以不确定在哪里看。如果您有关于如何使用水豚进行测试的提示,那就太棒了。我在场景中包含了js:true并将selenium作为宝石包含在内,但是我不知道如何点击打开div,因为它显然不是一个按钮或链接。谢谢!
答案 0 :(得分:1)
你在使用turbolinks吗? $(Document).ready()
需要针对turbolinks的变通方法,如本文use document ready with turbopinks
答案 1 :(得分:0)
听起来您的应用https://github.com/rails/turbolinks中可能存在turbolinks。 Turbolinks通过Ajax请求下一页然后替换页面正文来加速页面加载。这意味着脚本不必重新分析,等等也意味着.ready函数不会再次执行。您可以将$(文件).ready更改为
$(document).on('page:change', function(){
...
})
如果您的函数是幂等的,否则您可能需要page:load(有关每种类型的事件触发的详细信息,请阅读turbolinks文档),或者您可以安装jquery-turbolinks或者您可以禁用turbolinks。
对于测试,您可以使用
单击元素find(:css, '.donation-candidate').click
如果你有:css作为Capybara的默认值
,则可能不需要css