我试着测试我的项目.它以前工作过,我不知道每当我输入bundle exec rspec spec/
它时我做了什么cannot load such file -- capybara/rspec (LoadError)
.并且我需要一个建议,哪个有利于测试我的MVC在ruby轨道作为新手.
Gemfile:
------------
group :test do
# Pretty printed test output
gem 'turn', :require => false
gem 'minitest'
gem 'capybara', '1.1.2'
gem 'rb-inotify', '0.8.8'
gem 'libnotify', '0.5.9'
gem 'guard-spork', '0.3.2'
gem 'spork', '0.9.0'
gem 'spork-testunit'
gem 'guard-test'
gem 'ruby-prof'
gem 'factory_girl_rails', '1.4.0'
if RUBY_PLATFORM =~ /linux/
gem 'capybara-webkit'
end
gem 'launchy'
end
group :development, :test do
gem 'rspec-rails', '2.10.0'
gem 'guard-rspec', '0.5.5'
end
Run Code Online (Sandbox Code Playgroud)
require 'rubygems'
#require …
Run Code Online (Sandbox Code Playgroud) 我的模型中有一个私有方法,如下所示:
validate :record_uniq
private
def record_uniq
if record_already_exists?
errors.add(:base, "already exists")
end
end
def record_already_exists?
question_id = measure.question_id
self.class.joins(:measure).
where(measures: {question_id: ques_id}).
where(package_id: pack_id).
exists?
end
Run Code Online (Sandbox Code Playgroud)
这种方法更像是uniqueness
防范重复记录的范围.我想知道如何validate :record_uniq
使用shoulda
或编写测试 rspec
?
describe Foo do
before do
@bar = Foo.new(enr_rds_measure_id: 1, enr_rds_package_id: 2)
end
subject { @bar }
it { should validate_uniqueness_of(:record_uniq) }
end
Run Code Online (Sandbox Code Playgroud) 我曾尝试更改 bootstrap、jquery 和 popper 的版本,但没有成功。我不认为我使用了多个版本的 jquery。不知道哪里出错了。如果有人能帮我找到我遗漏的东西,那就太好了。
这是我的文件列表,
包.json:
{
"name": "kf",
"private": true,
"dependencies": {
"@fortawesome/fontawesome-free": "^5.12.1",
"@rails/ujs": "^6.0.0",
"@rails/webpacker": "4.2.2",
"bootstrap": "^4.4.1",
"jquery": "^3.4.1",
"popper.js": "^1.16.1",
"sweetalert2": "^9.8.2"
},
"version": "0.1.0",
"devDependencies": {
"webpack-dev-server": "^3.10.3"
}
}
Run Code Online (Sandbox Code Playgroud)
配置/webpack/environment.js
const { environment } = require('@rails/webpacker');
const webpack = require('webpack');
environment.plugins.append(
'Provide',
new webpack.ProvidePlugin({
$: 'jquery/src/jquery',
jQuery: 'jquery/src/jquery',
Popper: ['popper.js', 'default']
})
);
module.exports = environment;
Run Code Online (Sandbox Code Playgroud)
应用程序.js
require('@rails/ujs').start();
require('jquery/dist/jquery');
require('popper.js/dist/umd/popper');
require('bootstrap/dist/js/bootstrap');
require('@fortawesome/fontawesome-free');
require('./owl.carousel.min');
require('./fastclick');
require('./custom-script');
require('./return-to-top');
const Swal = require('sweetalert2');
window.Swal …
Run Code Online (Sandbox Code Playgroud) 我对ROR很新.我有一项任务要完成:
这是模型:
class File::DataImport < ActiveRecord::Base
attr_accessible :created_by, :file_name, :file_source, :updated_at, :updated_by
end
Run Code Online (Sandbox Code Playgroud)
这是控制器:
class Files::DataImportsController < ApplicationController
def index
end
def new
end
end
Run Code Online (Sandbox Code Playgroud)
而我的观点是index
和new
.
我想要一个字段来上传数据.数据应存储在服务器中,并将文件路径保存到指定列的数据库中file_name
.该路径应默认为所有上传文件.
我被困在如何开始.请帮我找到解决方案,我将从中学习.
提前致谢.
我是watir测试的新手.有人会帮我找到以下元素吗?
<div class="location_picker_type_level" data-loc-type="1">
<table></table>
</div>
Run Code Online (Sandbox Code Playgroud)
我想找到这个div
,data-loc-type
有table
存在.
browser.elements(:xpath,"//div[@class='location_picker_type_section[data-loc-type='1']' table ]").exists?
Run Code Online (Sandbox Code Playgroud) 我全局使用Jquery UI Datepicker函数在所有页面中使用日历.我创建了一个单独的javascript页面,如下所示:
var showDatePickers = function() {
$('[data-field-type="date"]').datepicker({
dateFormat: "yy-mm--dd",
showOn: "both",
buttonImageOnly: true,
buttonImage: "/assets/blue-calendar-icon.png",
buttonText: "Calendar"
});
}
$(showDatePickers);
Run Code Online (Sandbox Code Playgroud)
我只是在我的视图中发布了我的datepicker字段,
<div class="field">
<%= f.label :Renewal_Date %>
<%= f.text_field :Renewal_Date, readonly: 'readonly', data: {field_type: date}}
</div>
Run Code Online (Sandbox Code Playgroud)
我将上述函数调用为单独的javascript文件.
$(function() {
if ($('html.asset_contracts').length == 1) {
$(document.body).on('ajax:success', '.new_asset_contract, .edit_asset_contract', showDatePickers);
}
});
Run Code Online (Sandbox Code Playgroud)
当页面加载,编辑和新操作时,它工作正常.但是当rails验证错误显示datepicker函数不起作用时.它显示空白text_field
.
仅供参考:这是一个ajax页面,该new, create, update and edit
操作正在以ajax
页面形式运行.所以,我添加remote: true
了我的形式,我有new.js, edit.js, create.js and update.js
这是我的控制器,
def create
@contract = Asset::Contract.new(params[:asset_contract])
respond_to do …
Run Code Online (Sandbox Code Playgroud) 我是ROR的新手.我只想知道如果text_field为空,是否可以禁用提交标签按钮.
谢谢
我是ROR的新手.我想在单击VIEW中的提交按钮时调用存储过程进行处理.
Model:
-------
class Pro::DataImport < ActiveRecord::Base
attr_accessible :file_name, :process_name, :updated_by, :validates
end
Controller:
-----------------
class Pro::DataImportsController < ApplicationController
before_filter :authenticate_user!
layout "layouts/enr/energy_master"
def index
@pro_data_imports = Pro::DataImport.all
end
def new
@pro_data_import = Pro::DataImport.new
end
end
View
----------
<%= form_for @pro_data_import do %>
<div class="field">
Browse the file to upload:<br />
<%= file_field_tag ':file_name' %>
</div>
<div class="actions">
<%= submit_tag 'Import File' %>
</div>
<% end %>
Stored Proc
---------------
ALTER PROCEDURE "DBA"."my_enr_test"(file_name long varchar)
BEGIN
INSERT INTO DBA.pro_data_imports(file_name) values(file_name); …
Run Code Online (Sandbox Code Playgroud) 我更改了 ruby on Rails 项目中 en.yml 文件中的属性名称。按钮工作正常。但字段属性并没有改变。
这是我的模型,
class Enr::AffordableWarmth < ActiveRecord::Base
self.table_name = "AffordableWarmth"
self.primary_key = 'Record_No'
validates_presence_of :No_Bedrooms, :No_Bedspaces, :Max_Annual_Energy_Cost
validates :No_Bedrooms, uniqueness: { scope: :No_Bedspaces,
message: "already exists!" }
validates_numericality_of :No_Bedrooms, :No_Bedspaces, :Max_Annual_Energy_Cost
end
Run Code Online (Sandbox Code Playgroud)
en-GB:
helpers:
submit:
enr_rds_dea:
create: 'Create new user'
update: 'Update'
enr_affordable_warmth:
create: 'Create'
update: 'Update'
activerecord:
models:
AffordableWarmth:
attributes:
AffordableWarmth:
No_Bedrooms: "Number of Bedrooms"
Run Code Online (Sandbox Code Playgroud)
尽管如此,在 Rails 控制台中,它还是显示“没有卧室不能为空”。一些代码在 activerecord 中不起作用。在一些代码工作正常之前。
如何通过rails上的ruby中的模型使列值为null?例如,我有一个checkbox
被叫'include_on_epc'
和textbox
被叫'removal_reason'
.
如果选中该复选框,我想设置文本框的值应该在数据库中为NULL.
我试过以下,它没有用.
class Emm::Rrr::Result < ActiveRecord::Base
before_save :no_removal_reason_when_including_on_epc
private
def no_removal_reason_when_including_on_epc
if include_on_epc == 1
self.removal_reason == nil
end
end
end
Run Code Online (Sandbox Code Playgroud) 我想找到并单击Line Lo
以下值中的值.以下li
有100多条记录具有相同的类名.如何找到Line Lo
并单击该值.
<div id="loc">
<ul id="tab">
<li class="criteria">
<div class="bud">
<div class="inner">
<div class="attr">Code Lo</div>
</div>
</div>
</li>
<li class="criteria">
<div class="bud">
<div class="inner">
<div class="attr">Line Lo</div>
</div>
</div>
</li>
<li class="criteria">
<div class="bud">
<div class="inner">
<div class="attr">Add Lo</div>
</div>
</div>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我试过的时候 browser.ul(id: "tab").li(class: "criteria").div(text: "Line Lo")
得到了失败错误.
Unable to locate element, using(:class => "Criteria", :tag_name=>"li"
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的,不同的属性来找到文本Line Lo
而我失败了.
此外,此元素类似于第45个,因此可以在单击之前向下滚动并刷新此值吗?
提前致谢
ruby ×4
jquery ×3
javascript ×2
rspec ×2
watir ×2
bootstrap-4 ×1
jquery-ui ×1
rspec-rails ×1
shoulda ×1
sqlanywhere ×1
webpack ×1