标签: argument-error

当我在Rails中运行rake db:seed时,US-ASCII(Argument Error)中的字节序列无效

当我rake db:seed在我的Rails应用程序中运行时,我收到此错误:

US-ASCII中的无效字节序列(参数错误)

我只是添加science_majors到我的种子文件,现在当我运行rake db:seed它给我这个错误:

无效的字节序列错误

为什么会这样,我该如何解决?

seed.rb的一部分

@college = College.find_or_create_by_name!('University of Pittsburgh')
if @college.update_attributes(
  url: 'university-of-pittsburgh',
  public: 'Public',
  years: '4-year',
  category: 'National University',
  calendar: 'Semester',
  location: 'Pittsburgh, PA',
  setting: 'Large City (250-500k)',
  retention: '90',
  majors: 'business/marketing: 15%|social sciences: 14%|health professions: 11%|english: 10%|engineering: 9%|psychology: 8%|biology: 7%|history: 5%',
  scholarships_link: 'http://www.oafa.pitt.edu/universityschlrs.aspx',
  map: '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=university+of+pittsburgh&amp;aq=&amp;sll=40.444261,-79.970448&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=university+of+pittsburgh&amp;t=m&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038&amp;output=embed"></iframe><br /><small><a href="https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=university+of+pittsburgh&amp;aq=&amp;sll=40.431368,-79.9805&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=university+of+pittsburgh&amp;t=m&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038" style="color:#0000FF;text-align:left">View Larger Map</a></small>',
  street_view: '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" …
Run Code Online (Sandbox Code Playgroud)

rake ruby-on-rails seeding argument-error

85
推荐指数
5
解决办法
7万
查看次数

参数错误:范围主体需要可调用

我正在使用'Ruby On Rails 3基本培训'并且在使用名称范围时遇到了问题.在使用Rails控制台查找记录和使用查询时,一切进展顺利,直到我尝试在subject.rb文件中使用名称范围.这是我在subject.rb文件中的代码.

Class Subject < ActiveRecord::Base

  scope :visible, where(:visible => true)

end   
Run Code Online (Sandbox Code Playgroud)

我保存了.rb文件并重新启动了我的Rails控制台但是当我从rails控制台运行时:

subjects = Subject.visible
Run Code Online (Sandbox Code Playgroud)

我明白了: ArgumentError: The scope body needs to be callable.

有谁知道为什么我收到这个错误.

scope ruby-on-rails argument-error ruby-on-rails-3

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

Ruby`split':UTF-8中的无效字节序列(ArgumentError)

我正在尝试填充电影对象,但在解析u.item文件时我收到此错误:

`split':UTF-8中无效的字节序列(ArgumentError)

File.open("Data/u.item", "r") do |infile|
            while line = infile.gets
                line = line.split("|")
            end
end
Run Code Online (Sandbox Code Playgroud)

只有在尝试使用花哨的国际标点符号拆分行时才会发生错误.

这是一个样本

543 |Misérables,Les(1995)| 01-Jan-1995 || http://us.imdb.com/M/title-exact?Mis%E9rables%2C%20Les%20%281995%29 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0

有工作吗?

ruby character-encoding argument-error

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

如何使用delayed_job使Rails 3.0 ActionMailer异步运行?遇到ArgumentErrors

我正在尝试延迟在注册我的应用程序时发送给用户的通知电子邮件.电子邮件是使用ActionMailer我打电话发送的InitMailer.我试图推迟工作的方式是使用collectiveidea的delayed_job https://github.com/collectiveidea/delayed_job.为此,您可以看到我handle_asynchronously在定义方法后指定initial_email:

class InitMailer < ActionMailer::Base
  default :from => "info@blahblahblah.com"

  def initial_email(user)
    @user = user
    @url = "http://www.blahblahblah.com"
    mail(:to => user.email,
         :subject => "Welcome to my website!"
         ) 
  end

  handle_asynchronously :initial_email
end
Run Code Online (Sandbox Code Playgroud)

但是,我在日志文件中遇到参数错误"delayed_job.log":

Class#initial_email failed with ArgumentError: wrong number of arguments (1 for 0) - 5 
failed attempts
Run Code Online (Sandbox Code Playgroud)

为了您的信息,电子邮件使用以下行在控制器中发送:

@user = InitUser.new(params[:init_user])
InitMailer.delay.initial_email(@user)
Run Code Online (Sandbox Code Playgroud)

此外,当我设置我的代码没有延迟时,电子邮件发送没有问题(除了它减慢我的应用程序等待gmail服务器的事实)

这里导致错误的地方在哪里?如何才能正确发送延迟邮件?

ruby-on-rails actionmailer delayed-job argument-error

10
推荐指数
1
解决办法
4586
查看次数

minitest_plugin.rb:9获取错误的参数数量

~/Sites/sample_app$ rails test
Running via Spring preloader in process 24338
Run options: --seed 58780

Running:

..

Finished in 0.292172s, 6.8453 runs/s, 6.8453 assertions/s.
/var/lib/gems/2.3.0/gems/railties-5.1.0/lib/rails/test_unit/minitest_plugin.rb:9:in `aggregated_results': wrong number of arguments (given 1, expected 0) (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我会收到这个错误.我似乎找不到任何有这个特定错误的人.我正在按照教程https://www.railstutorial.org/book/static_pages.此错误遵循rails test命令.如果有帮助,运行Ubuntu和rails 5.1.我没有传递任何参数,所以我不明白为什么我会收到这个错误.

我的测试文件如下:

    require 'test_helper'

    class StaticPagesControllerTest < ActionDispatch::IntegrationTest

    test "should get home" do
      get static_pages_home_url
      assert_response :success
    end

    test "should get help" do
      get static_pages_help_url
      assert_response :success
    end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails minitest argument-error

10
推荐指数
2
解决办法
2020
查看次数

为什么带有无效参数的范围有时不会导致参数错误?

以下代码导致参数错误:

n = 15
(n % 4 == 0)..(n % 3 == 0)
# => bad value for range (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

我认为是因为它评估为:

false..true
Run Code Online (Sandbox Code Playgroud)

并且在范围中使用不同类型的类:TrueClassFalseClass.但是,以下代码不会引发错误.这是为什么?不Enumerable#collect抓住它?

(11..20).collect { |i| (i % 4 == 0)..(i % 3 == 0) ? i : nil }
# => no error
Run Code Online (Sandbox Code Playgroud)

稍后添加: 如果fcn返回15,则仅评估范围的前半部分

def fcn(x)
  puts x
  15
end

if  (fcn(1) % 4 == 0)..(fcn(2) % 3 == 0); end
# => 1
Run Code Online (Sandbox Code Playgroud)

但如果我们将返回值更改为16,那么输入将是

# => 1
# => …
Run Code Online (Sandbox Code Playgroud)

ruby exception range argument-error ruby-1.9.3

9
推荐指数
1
解决办法
1642
查看次数

Rails 3.2.13/Devise 2.2.3:方法"authenticate_scope!" 抛出错误:参数数量错误(1表示0)

我使用Devise(2.2.3)并尝试使用此jQuery ajax调用为用户加载"编辑"表单:

$.ajax({
  type: 'GET',
  url: '/users/edit',
  data: {
    id: id
  }
});
Run Code Online (Sandbox Code Playgroud)

这将调用此before_filter ...

prepend_before_filter :authenticate_scope!, :only => [:edit, :update, :destroy]
Run Code Online (Sandbox Code Playgroud)

...来自宝石文件......

devise/app/controllers/devise/registrations_controller.rb

(see: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb)
Run Code Online (Sandbox Code Playgroud)

最终调用的方法是:

# Authenticates the current scope and gets the current resource from the session.
def authenticate_scope!
  send(:"authenticate_#{resource_name}!"), :force => true)
  self.resource = send(:"current_#{resource_name}")
end
Run Code Online (Sandbox Code Playgroud)

而我得到的错误是:

ArgumentError at /users/edit
============================

> wrong number of arguments (1 for 0)

(gem) devise-2.2.3/app/controllers/devise/registrations_controller.rb, line 116
-------------------------------------------------------------------------------

``` ruby
  111       signed_in_root_path(resource)
  112     end
  113   
  114     # Authenticates the current …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails argument-error devise

9
推荐指数
1
解决办法
1518
查看次数

Rails:.new的参数数量错误(1表示0)

我尝试创建Review对象时出现此错误:

ArgumentError in ReviewsController#create

wrong number of arguments (1 for 0)

app/controllers/reviews_controller.rb:17:in `new'
app/controllers/reviews_controller.rb:17:in `create'
Run Code Online (Sandbox Code Playgroud)

我不明白我做错了什么?我可以创建任何其他对象,但这些给了我这个错误,无论我做什么.我试图不提出任何争论,但它仍然认为有一个......

我的模特Review:

# -*- encoding : utf-8 -*-
class Review < ActiveRecord::Base

  attr_accessible :global_validation_date, :hr_comment, :hr_validate, :hr_validator, :manager_comment, :manager_validate, :manager_validation_date, :manager_validator, :owner_satisfaction, :owner_validate, :owner_validation_date, :send, :user_id

  belongs_to :user
  has_many :review_projects, dependent: :destroy

end
Run Code Online (Sandbox Code Playgroud)

我的控制器ReviewsController:

# -*- encoding : utf-8 -*-
class ReviewsController < ApplicationController

  before_filter :authenticate_user!
  before_filter :check_permissions, only: :create

  def index
    @user = User.find(params[:user_id])
    @reviews = @user.reviews
  end

  def create …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails argument-error ruby-on-rails-3

8
推荐指数
1
解决办法
8296
查看次数

Flash错误#1063参数计数不匹配

我收到以下奇怪的错误:

ArgumentError:错误#1063:Away3DLiteSprite()上的参数计数不匹配.预计4,得0.

flash actionscript-3 away3d flartoolkit argument-error

5
推荐指数
0
解决办法
931
查看次数

在Ruby 1.9中传递一个块时,生成器抛出"错误的参数数量"错误

我正在尝试将Ruby 1.8应用程序升级到1.9并在此处遇到一些障碍.在Ruby 1.8.7中,我可以将一个块传递给Builder 3.0.0并按预期调用它:

1.8.7 :003 > @builder = Builder::XmlMarkup.new
1.8.7 :004 > block = lambda { puts "foo" }
1.8.7 :005 > @builder.tag(&block)
foo
Run Code Online (Sandbox Code Playgroud)

但在1.9中,我收到此错误:

1.9.3p0 :002 > @builder = Builder::XmlMarkup.new
1.9.3p0 :003 > block = lambda { puts "foo" }
1.9.3p0 :004 > @builder.content(&block)
ArgumentError: wrong number of arguments (1 for 0)
  from (irb):3:in `block in irb_binding'
  from /Users/dev/.bundle/ruby/1.9.1/gems/builder-3.0.0/lib/builder/xmlbase.rb:155:in `call'
  ...
Run Code Online (Sandbox Code Playgroud)

并重写为一个stabby lambda(这只是语法糖,对吗?)没有帮助:

1.9.3p0 :006 > block = -> { puts "foo" }
1.9.3p0 :007 > @builder.content(&block)
ArgumentError: …
Run Code Online (Sandbox Code Playgroud)

ruby lambda builder argument-error ruby-1.9

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