在我的Rails应用程序中,我有一个文件sample_data.rb内部/lib/tasks以及我/spec目录中的一堆测试文件.
所有这些文件通常共享通用功能,例如:
def random_address
[Faker::Address.street_address, Faker::Address.city].join("\n")
end
Run Code Online (Sandbox Code Playgroud)
我应该把这些辅助功能放在哪里?对此有什么约定吗?
谢谢你的帮助!
ruby rake-task ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2
我最近从RSpec 2.99升级到RSpec 3.这将是我的规格之一:
require 'spec_helper'
describe User, :type => :model do
it "is invalid without a password" do
expect(FactoryGirl.build(:user, :password => nil).errors_on(:password).size).to eq(1)
end
end
end
Run Code Online (Sandbox Code Playgroud)
我已经运行了Transpec gem,它应该将我的大部分规格转换为RSpec 3语法.但是,我仍然收到此错误(以及其他一些错误):
Failure/Error: expect(FactoryGirl.build(:user, :password => nil).errors_on(:password).size).to eq(1)
NoMethodError:
undefined method `errors_on' for #<User:0x00000108beaba0>
Run Code Online (Sandbox Code Playgroud)
我尝试以多种不同的方式重新编写测试,但错误不会消失.
有人可以帮忙吗?
我只是想知道是否有人在没有任何Show操作的情况下构建了Rails应用程序.
在我的应用程序中,如果用户从列表中选择一个项目,他可能不仅要显示它,还要编辑它.
那么不执行任何show动作并将所有记录链接到编辑表单是一种好习惯吗?
我看到的唯一警告是用户可能会意外编辑项目.但是可以通过使用jQuery在所有表单字段上禁用默认属性来防止这种情况.这样,用户必须单击"编辑"按钮才能解锁表单字段以进行编辑.
这有意义还是我完全疯了?
谁知道,也许这会导致与Rails的RESTful架构发生冲突?
我有这些模型:
class Organisation < ActiveRecord::Base
has_many :people
has_one :address, :as => :addressable,
:dependent => :destroy
accepts_nested_attributes_for :address, :allow_destroy => true
end
class Person < ActiveRecord::Base
attr_accessible :first_name, :last_name, :email, :organisation_id, :address_attributes
belongs_to :user
belongs_to :organisation
has_one :address, :as => :addressable,
:dependent => :destroy
accepts_nested_attributes_for :address, :allow_destroy => true
# These two methods seem to have no effect at all!
validates_presence_of :organisation, :unless => "address.present?"
validates_associated :address, :unless => "organisation.present?"
end
class Address < ActiveRecord::Base
belongs_to :addressable, :polymorphic => true
validates_presence_of …Run Code Online (Sandbox Code Playgroud) 我试图稍微干掉我的Rails应用程序,所以我想在我的show视图中渲染一个表单但禁用所有输入字段.
// show.html.erb
<%= form_for(@project) do |f| %>
<%= render 'fields', :f => f %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
谢谢你的帮助.
运行我的RSpec测试后,我经常得到如下输出:
expected: 50
got: #<BigDecimal:7fbdcd1b5408,'0.22E3',9(36)>
Run Code Online (Sandbox Code Playgroud)
我怎样才能知道RSpec到底有多少人?
谢谢你的帮助.
我在我的Rails应用程序中使用了以下gradientmixin anchors:
@mixin gradient($color) {
$from: lighten($color, 5%);
$to: darken($color, 5%);
background-color: $color;
background-image: -moz-linear-gradient($from, $to);
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from($from), to($to));
background-image: -webkit-linear-gradient($from, $to);
background-image: -o-linear-gradient($from, $to);
&:hover {
$hover_color: darken($color, 5%);
$from: lighten($hover_color, 5%);
$to: darken($hover_color, 5%);
background-color: $hover_color;
background-image: -moz-linear-gradient($from, $to);
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from($from), to($to));
background-image: -webkit-linear-gradient($from, $to);
background-image: -o-linear-gradient($from, $to);
}
}
Run Code Online (Sandbox Code Playgroud)
在:hover不工作,虽然.当我悬停在一个anchor没有任何变化.我希望看到那里的颜色发生变化.
谁能告诉我这里缺少什么?
谢谢你的帮助.
在我的Rails应用程序中,如果user想要删除自己的帐户,他首先必须在我的terminate视图中输入他的密码:
<%= form_for @user, :method => :delete do |f| %>
<%= f.label :password %><br/>
<%= f.password_field :password %>
<%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是我的UsersController:
def terminate
@user = User.find(params[:id])
@title = "Terminate your account"
end
def destroy
if @user.authenticate(params[:user][:password])
@user.destroy
flash[:success] = "Your account was terminated."
redirect_to root_path
else
flash.now[:alert] = "Wrong password."
render :terminate
end
end
Run Code Online (Sandbox Code Playgroud)
问题是我似乎找不到用RSpec测试这个的方法.
我有的是这个:
describe 'DELETE #destroy' do
before :each do
@user = FactoryGirl.create(:user)
end
context "success" do …Run Code Online (Sandbox Code Playgroud) 为了用假数据填充我的Rails应用程序,我经常这样做:
person = Person.create(
:first_name => Faker::Name.first_name,
:last_name => Faker::Name.last_name,
:email => Faker::Internet.email
)
Run Code Online (Sandbox Code Playgroud)
这可能会产生person如下:
名字:Olivia
姓氏:Kubera
电子邮件:milan_nieklauson@bachmannjacob.net
有没有办法生成更连贯的假数据,如:
名字:Olivia
姓氏:Kubera
电子邮件:olivia_kubera@aol.com
或者我是否必须拿出自己的东西来实现这一目标?
我正在建立一个新的网站,我希望该网站的徽标在所有设备上看起来都非常清晰(从台式电脑到iPhone和iPad上的视网膜显示器).
我所拥有的徽标不包含任何渐变或像素,因此我可以轻松地将其保存为矢量格式.但是,没有人能真正说出最佳格式.
是SVG还是PNG?
我将如何创建SVG文件?
即使在谷歌上也没有太多信息.
感谢您与我们分享您的经验.
ruby ×6
rspec ×3
bigdecimal ×1
css ×1
css3 ×1
faker ×1
image ×1
rake-task ×1
rspec-rails ×1
sass ×1
validation ×1