小编use*_*062的帖子

如何使用rspec和工厂女孩创建具有特定id的模型

我用:

gem 'rails', '3.2.11'
gem 'rspec-rails', '2.13.2'
gem 'webrat', '0.7.3'
gem 'factory_girl_rails', '4.1.0'
gem 'spork', '~> 0.9.0.rc'
Run Code Online (Sandbox Code Playgroud)

我想测试我的HP,我总是有一个指向某个用户的链接,因此HP的页面控制器包含:

@user = User.find(7)
Run Code Online (Sandbox Code Playgroud)

惠普的视图包含:

link_to 'See user', @user
Run Code Online (Sandbox Code Playgroud)

问题是所有测试都失败,因为测试数据库没有id为7的用户.我试过:

FactoryGirl.define do
  factory :user do
    name "Testuser"
    id "7"
  end
end
Run Code Online (Sandbox Code Playgroud)

......但这不起作用.始终存在错误:

规格如下:

describe "GET 'home'" do

    before(:each) do
      FactoryGirl.create(:user)
    end

    it "should be successful" do
      get 'home'
      response.should be_success
    end
end
Run Code Online (Sandbox Code Playgroud)

失败/错误:获取'home'ActiveRecord :: RecordNotFound:找不到id = 7的用户

惠普在现实中工作得很好,只是测试失败了.我怎样才能保证这个测试不会失败?

ruby-on-rails rspec2 ruby-on-rails-3 factory-bot

13
推荐指数
2
解决办法
1万
查看次数

带有rails 3.1的Rspec给出了DEPRECATION WARNING ActiveRecord :: Associations :: AssociationCollection不推荐使用?

我升级到rails 3.1并且我的测试现在遇到了一些问题.

测试前我收到以下警告:

弃用警告:不推荐使用ActiveRecord :: Associations :: AssociationCollection!请改用ActiveRecord :: Associations :: CollectionProxy.(从/home/user/rails_projects/project/config/environment.rb:5调用)

如何使用CollectionProxy而不是AssociationCollection?

这是我的Gemfile:

source 'http://rubygems.org'

gem 'rails', '3.1.0'
gem 'jquery-rails'
gem "therubyracer", "~> 0.9.4"

gem 'carrierwave', '0.5.6'
gem 'haml', '~>3.1.2'
gem 'mysql2', '0.3.7'
gem 'rmagick', '2.13.1'
gem 'sitemap_generator', '2.0.1'
gem 'whenever', '0.6.8', :require => false
gem 'will_paginate', '3.0.pre2'

group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end

group :development do
  gem 'rspec-rails', '2.6.1'
  gem 'annotate-models', '1.0.4'
  gem 'faker', '0.9.5', :require => false
  gem …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails rspec2 ruby-on-rails-3

11
推荐指数
1
解决办法
1510
查看次数

使用mysql复制并覆盖一个数据库到另一个数据库

我想将我的生产数据库复制到我的开发环境.我将website_production复制到my developpemnt环境的mysql中,所以使用SHOW DATABASES; 我现在有

website_development website_production

作为数据库.如何使用mysql命令将所有表格及其内容从website_production复制并覆盖到website_developemnt?

mysql mysqldump

11
推荐指数
1
解决办法
9771
查看次数

Carrierwave重新创建版本

我正在使用carrierwave和rmagick来处理我的图片上传.我现在在image_uploader.eb中添加了一个新版本(smallthumb):

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick
  storage :file

  def store_dir
    "uploads/images"
  end

  version :thumb do
    process :resize_to_fill => [250, 250]
  end

  version :smallthumb do
    process :resize_to_fill => [70, 70]
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end
Run Code Online (Sandbox Code Playgroud)

我有一个名为"image"的模型,其中安装了图像上传器:

class Image < ActiveRecord::Base
  attr_accessible :date, :description, :name, :size, :image, :article_ids
  has_and_belongs_to_many :articles
  mount_uploader :image, ImageUploader
end
Run Code Online (Sandbox Code Playgroud)

我已经读过我需要调用recreate_versions !,但是我不明白我需要在哪里调用这个操作以及如何调用.我在公共/上传/图像的实时服务器上有我的图像.如何重新创建所有这些图像的版本(在我的开发机器和实时服务器上),以便我也可以使用图像的小型版本?

ruby-on-rails rmagick carrierwave ruby-on-rails-4

3
推荐指数
1
解决办法
5064
查看次数

使用Rails 3.1在google maps infowindow中显示多个标记的链接

我有一个使用谷歌地图API v3的公司的多个标记的地图.我需要从infowindow链接到我的应用程序的公司show视图,所以如果我点击标记,infowindow会打开一些基本信息和链接来查看公司的详细信息.代码是这样的:

class CitiesController < ApplicationController

...

def businessmap
    @city = City.find(params[:id])
    @mapcenter = @city.geocode
    @businesses = @city.businesses
    respond_to do |format|
      format.html
      format.json { render :json => @businesses.to_json(:only => [:id, :business_name, :phone, :latitude, :longitude]) }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

mapview本身就在这里:

%script{:type => "text/javascript", :charset => "utf-8", :src => "http://maps.googleapis.com/maps/api/js?v=3.6&sensor=false&region=IN"}
%script{:type => "text/javascript"}
  function initialize() {

  var cityLatlng = new google.maps.LatLng(
  = @mapcenter[0]
  ,
  = @mapcenter[1]
  );

  var options = {
  zoom: 13,
  center: cityLatlng,
  mapTypeId: google.maps.MapTypeId.ROADMAP
  };

  var map = new …
Run Code Online (Sandbox Code Playgroud)

javascript google-maps-api-3 ruby-on-rails-3

2
推荐指数
1
解决办法
1万
查看次数

如何检查Globalize是否使用了后备

我在用:

gem 'rails', '4.0.0'
gem 'globalize', '~> 4.0.2'
Run Code Online (Sandbox Code Playgroud)

在我的Image.rb模型中,我有两列我想翻译(英语和德语):

translates :name, :description
Run Code Online (Sandbox Code Playgroud)

在application.rb我设置:

config.i18n.fallbacks = true
Run Code Online (Sandbox Code Playgroud)

Everthing工作正常.我有一个英文描述,如果我将语言改为德语,它会显示德语描述以防有一个,否则显示英文文本.Proplem仍然是大多数图像描述没有德语翻译,所以我想在德国网站上添加一条短信,说目前没有德语翻译,但我们会显示英文文本,直到有德语翻译可用.

我打算在我的观点中添加类似的东西

if fallback.true?
  Message: This text has not been translated yet and is shown in English
Run Code Online (Sandbox Code Playgroud)

有没有办法检查Globalize是否使用了回退选项并在这种情况下显示消息?

ruby ruby-on-rails internationalization globalize

2
推荐指数
1
解决办法
371
查看次数