【问题标题】:JavaScript code on rails consoleRails 控制台上的 JavaScript 代码
【发布时间】:2014-09-17 13:00:09
【问题描述】:

我在 Cabypara 代码的某处使用binding.pry 进行调试,我想使用 jQuery 检查 html 元素的值。

我不能使用debugger,然后从浏览器中检查值,因为此代码是用于测试的Cabybara代码,例如:

When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
  select(value, :from => field)
  binding.pry
end

如何在 Rails 控制台上通过 jQuery 代码检查该字段的值作为 $("##{field}").val()

【问题讨论】:

  • rails 控制台 + javascript?当你的调试器在等待时,你能看到浏览器在等待吗?
  • 不,我不在我的黄瓜场景中使用@javascript,因为我不需要它。
  • ok 然后 rails 控制台 => 仅服务器 => 无客户端访问 => 无 javascript

标签: javascript jquery ruby-on-rails capybara


【解决方案1】:

这个答案取决于@apneadiving 的评论:

Rails 控制台仅用于服务器端,不用于客户端,这些帮助链接:

  1. Ruby-on-Rails is server side
  2. Rails console 可用于在不接触网站的情况下使用代码测试快速想法并在服务器端更改数据。

【讨论】:

    【解决方案2】:

    您可以在 Rails 呈现您的视图时调用 binding.pry,即使在视图的 javascript 部分中也是如此。

    这不会让您访问客户端代码。正如@apneadiving 和@mohamed-yakout 所说,您无法从服务器访问客户端,但它可以让您访问渲染过程中当时可用的所有服务器端信息。

    erb:

    <script>
      // some javascript...
    
      "<% binding.pry %>" 
    </script>
    
    // Note: You can not do this from `.js` files that are assets of the view without 
    // adding the `.erb` extension to the javascript files.
    

    这可能有助于检查 JQueryJavascript 正在使用的值,并验证它们在流程的此步骤中是否正确构建。例如:验证用于生成表行的集合

    在您的情况下,您可以验证 field 的值,但不能验证由字段变量传递的 id 找到的元素的值。

     $("##{field}").val()
    

    "##{field}" 的结果是#unexpected 而不是#expected 时,这会很有帮助,因为您无法从客户端访问服务器端代码来确定呈现问题。

    注意:这也可以转换为 Slim

    javascript:
      // some javascript...
    
      "#{binding.pry}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-14
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 2012-05-03
      相关资源
      最近更新 更多