当我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&source=s_q&hl=en&geocode=&q=university+of+pittsburgh&aq=&sll=40.444261,-79.970448&sspn=0.142165,0.251656&ie=UTF8&hq=university+of+pittsburgh&t=m&ll=40.443486,-79.958245&spn=0.010798,0.021038&output=embed"></iframe><br /><small><a href="https://maps.google.com/maps?f=q&source=embed&hl=en&geocode=&q=university+of+pittsburgh&aq=&sll=40.431368,-79.9805&sspn=0.142165,0.251656&ie=UTF8&hq=university+of+pittsburgh&t=m&ll=40.443486,-79.958245&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) 我正在使用'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.
有谁知道为什么我收到这个错误.
我正在尝试填充电影对象,但在解析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
有工作吗?
我正在尝试延迟在注册我的应用程序时发送给用户的通知电子邮件.电子邮件是使用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服务器的事实)
这里导致错误的地方在哪里?如何才能正确发送延迟邮件?
~/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) 以下代码导致参数错误:
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)
并且在范围中使用不同类型的类:TrueClass和FalseClass.但是,以下代码不会引发错误.这是为什么?不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) 我使用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) 我尝试创建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) 我收到以下奇怪的错误:
ArgumentError:错误#1063:Away3DLiteSprite()上的参数计数不匹配.预计4,得0.
我正在尝试将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) argument-error ×10
ruby ×5
actionmailer ×1
away3d ×1
builder ×1
delayed-job ×1
devise ×1
exception ×1
flartoolkit ×1
flash ×1
lambda ×1
minitest ×1
rake ×1
range ×1
ruby-1.9 ×1
ruby-1.9.3 ×1
scope ×1
seeding ×1