我有一个带有标签的选择框:
<label for="slide_orientation">Slide orientation</label>
<select disabled="" class="property" id="slide_orientation" name="slide_orientation">
<option value="horizontal">Horizontal</option>
<option value="vertical" selected="selected">Vertical</option>
</select>
Run Code Online (Sandbox Code Playgroud)
如您所见,禁用了选择框.当我尝试找到它时field_labeled("Slide orientation"),它会返回一个错误:
Capybara::ElementNotFound: Unable to find field "Slide orientation"
from /Users/pascal/.rvm/gems/ruby-1.9.3-p392/gems/capybara-2.0.2/lib/capybara/result.rb:22:in `find!'
Run Code Online (Sandbox Code Playgroud)
如果未禁用选择框,则field_labeled("Slide orientation")返回select元素就好了.
这是预期的行为吗?如果是这样,我将如何寻找残疾元素?在我的情况下,我需要它来测试它是否被禁用.
为了运行Capybara和Selenium的Cucumber规范,我需要能够确定某些JQuery效果是否已经完成,然后才能继续下一步.是否有一种通用的方法来确定JQuery是否仍在执行效果(例如类似的东西$.effects.active.size == 0)?
我已经在几个目录中组织了我的javascript文件,我发现了以下奇怪的行为.鉴于以下树:
+ app
+ assets
+ javascripts
+ common
+ public
+ common
+ home
- home.js
Run Code Online (Sandbox Code Playgroud)
home.js 看起来像这样:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_directory ../../jquery_plugins
//= require_directory ../../common
//= require_directory ../common
//= require_self
Run Code Online (Sandbox Code Playgroud)
现在的诀窍在于jquery_plugins目录.我把vendor/assets/javascripts它放在里面(当我检查时,它包含在资产加载路径中Rails.application.config.assets.paths).当我这样做时,我得到错误:require_tree argument must be a directory.当我移动该目录时,app/assets/javascripts一切正常.
有没有人知道我做错了什么?或者这是一个错误?
在我的Rails 3.2项目中,我偶尔会http://jsonip.com从Javascript 发送一个http请求.但是当使用@javascript标记运行Cucumber时,请求会非常频繁地发送.这显然是非常不受欢迎的,我想存根这样的请求.现在,我想我可以使用stub_requestfrom webmock来实现这一点,就像这样:
Before do
stub_request(:any, /.*jsonip.*/).to_return(:body => '{"ip":"24.104.73.2","about":"/about"}')
end
Run Code Online (Sandbox Code Playgroud)
但即使有这个,jsonip从Javascript调用.所以我发现webmock实际上并没有存根Ajax请求(至少没有上面的stub_request语句).
在Cucumber/Capybara/Selenium设置中存根Ajax请求的正确方法是什么?
所以我想让Rails为我处理特定于语言环境的路由,例如
/en/companies
/nl/companies
Run Code Online (Sandbox Code Playgroud)
这对路线定义很有用:
scope "(:locale)", :locale => /en|nl/ do
resources :companies
end
Run Code Online (Sandbox Code Playgroud)
但与此同时,公司拥有浅层嵌套资源,如下所示:
scope "(:locale)", :locale => /en|nl/ do
resources :companies, :shallow => true do
resources :pages
end
end
Run Code Online (Sandbox Code Playgroud)
这允许路径/en/companies/1/pages,但不是路径/en/pages/1/edit.由于"浅"也剥离了路径的"语言环境"部分,似乎我被困住了/pages/1/edit?locale=en.有没有办法让Rails以我可以使用的方式处理带有语言环境的浅层嵌套资源/en/pages/1/edit?
我网站的单独部分有单独的Javascript文件集,它们一起投入 - 相互干扰.为了使用Jasmine测试所有内容,似乎我需要一些方法来为不同的套件定义单独的"资产"集.这目前是否可行,若然,怎么样?
一段时间以来,我一直在为此烦恼。我们的项目已经发展到一个合理的规模:大约。250 个 JS 文件和 50 个 SASS 文件。我会说,不要太过分。尽管如此,Sprockets 仍需要很长时间来渲染所有资产。即使在简单的页面重新加载中,我希望看到缓存的一些好处,它也需要 10、20、30 秒,有时甚至更多秒才能为所有资产提供服务。这是在配备 SSD 的不错的 MacBook Pro 上。
这是最简单页面之一的火焰图:登录页面。加载大约需要 12 秒。“真正的”应用程序页面要糟糕得多:
设置config.assets.debug = false对一些人有帮助,但同时,我真的很想将它设置为 true 以便于调试。
有没有人对如何使这更可行有任何建议?
我有一个包含项目列表的页面,来自Rails后端.我希望能够通过Rails UJS使用Ajax调用来编辑该列表中的行.
我在每行的末尾添加了一个编辑按钮.编辑按钮是一个
link_to ... :remote => true.单击它会再次加载列表,但所选行处于编辑模式.可编辑的行嵌入在form ... :remote => true.该行中的保存按钮是一个submit按钮.
index.html.haml
#editor
%table
- @items.each do |item|
%tr
= render :partial => 'row', :locals => { :item => item }
Run Code Online (Sandbox Code Playgroud)
_row.html.haml
...
%td // a number of columns with attributes
...
%td
= link_to t("actions.edit"), edit_item_path(item), :remote => true
= link_to t("actions.delete"), item_path(item), :remote => true, :method => :delete, :data => { :confirm => "Are you sure?" }
Run Code Online (Sandbox Code Playgroud)
edit.html.haml
#editor
%table …Run Code Online (Sandbox Code Playgroud) 在我的Rails应用程序中,我有以下类型的多级层次结构:
class Vehicle < ActiveRecord::Base end
class RoadVehicle < Vehicle end
class Car < RoadVehicle end
class Buss < RoadVehicle end
Run Code Online (Sandbox Code Playgroud)
然后我有一个引用中间级别的类,如下所示:
class Garage < ActiveRecord::Base
has_many :road_vehicles
end
Run Code Online (Sandbox Code Playgroud)
在这个简化的示例中,我为vehicles表提供了一个类型列以启用单表继承.此外,它包含garage_id列,以启用has_many关系.当我创建一个新车库并添加汽车和公共汽车时,所有都会按预期添加到数据库中.但是,当我稍后检索车库对象并检查road_vehicles集合时,它是空的.谁能告诉我我做错了什么?
除了检索用户日历的日历视图(代表用户)之外,我们还努力尝试通过 Graph API 使用
https://graph.microsoft.com/beta/users/room1@ourdomain.com/calendarView. 这是一个痛苦的过程,因为我们遇到了很多问题,目前被困在以下404响应中:
https://graph.microsoft.com:443/v1.0/users/room1@ourdomain.com/calendarView?startDateTime=2018-12-04T23:00:00.000Z&endDateTime=2019-02-10T22:59:59.999Z
{
"error": {
"code": "ErrorItemNotFound",
"message": "The specified object was not found in the store.",
"innerError": {
"request-id": "358a003a-57a4-4f0e-91da-edc17c1fa2d8",
"date": "2018-12-12T07:38:33"
}
}
}
Run Code Online (Sandbox Code Playgroud)
房间的电子邮件地址已经过双重检查并且资源存在,因为我们可以使用它创建约会,并且当我们检索在该位置有约会的用户的日历时,它甚至会在响应中返回。
应用程序权限和 OAuth2 范围设置为:openid email profile offline_access https://graph.microsoft.com/Calendars.Read https://graph.microsoft.com/Calendars.Read.Shared https://graph.microsoft.com/User.Read
https://graph.microsoft.com/User.ReadBasic.All https://graph.microsoft.com/User.Read.All,因此根据文档判断,这应该不是问题。
有谁知道如何解决这个问题?