我尝试了rails 3,刚刚开始了一个新项目。以下是我输入的内容。
rails new todo
cd todo
bundle install
rails generate scaffold Task done:boolean task:text created:date
rake db:migrate
rails server&
firefox 0.0.0:3000/tasks&
在页面0.0.0:3000/tasks/new
上,我填写了字段的一些值,然后点击按钮创建新的task
。它会使用空白页重定向到0.0.0:3000/tasks
。当我手动重新加载页面时,它显示八个tasks
,即使应该只有一个。
当我进一步点击show
,edit
或destroy
时,它会说,例如:ActiveRecord::RecordNotFound in TasksController#show
Couldn't find Task with ID=1
。
当我重新加载到0.0.0:3000/tasks
时,所有八个tasks
仍在那里。
这有什么问题?我的计算机上的rails是否已损坏?
日志
点击“创建任务”后,终端显示
开始为127.0.0.1获取“/ tasks / new” 在2011-05-13 22:04:26 -0400
由TasksController处理#new as HTML呈现的任务/ _form.html.erb (6.7ms)渲染任务/ new.html.erb 在布局/应用程序内(25.3ms) 35毫秒内完成200 OK(浏览次数: 27.9ms | ActiveRecord:0.0ms)
通过x
tasks/x
1
重复八次,从8
到rescue in merge'
/usr/local/lib/ruby/1.9.1/uri/generic.rb:743:in
重复八次:
在127.0.0.1开始POST“/ tasks” 2011-05-13 22:04:32 -0400处理 通过TasksController#创建为HTML
中
参数:{“utf8”=>“✓”, “authenticity_token”=> “中QZHWWyE5KcZhLrzRhB4Fgnl9HGiQqNkn17O4CUfUUJU =”, “任务”=> { “完成”=> “中0” 时, “任务”=> “中测试\ r \ n” 个, “创建(1i)中”=> “中2011”, “创建(2I)”=> “中5”, “创建的(3R)”=> “中14”}, “commit”=>“创建任务”} AREL (0.2ms)插入“任务”(“完成”, “task”,“created”,“created_at”, “updated_at”)VALUES('f','test', '2011-05-14','2011-05-14 02:04:32.065805','2011-05-14 02:04:32.065805')重定向到 http://0.0.0:3000/tasks/2已完成 302发现于17ms [2011-05-13 22:04:32] ERROR URI :: InvalidURIError: 方案http不接受 注册表部分:0.0.0:3000(或不好 主机名?) /usr/local/lib/ruby/1.9.1/uri/generic.rb:746:insetup_header' /usr/local/lib/ruby/1.9.1/webrick/httpresponse.rb:101:in
合并” /usr/local/lib/ruby/1.9.1/webrick/httpresponse.rb:163:inrun' /usr/local/lib/ruby/1.9.1/webrick/server.rb:183:in
send_response” /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:86:in {_ 1}}阻止在start_thread'
答案 0 :(得分:1)
任务是Rails中的保留字。我想这就是为什么导轨以starnge方式运行的原因。
有关其他保留字的列表,请参阅以下任何链接
http://cheat.errtheblog.com/s/rails_reserved_words/
http://www.yup.com/articles/2007/01/31/no-reservations-about-keywords-in-ruby-on-rails
答案 1 :(得分:1)
您正在尝试使用0.0.0:3000
访问您的网站,这是一个无效的地址(我实际上很惊讶,甚至可以让您访问该网站)。
在Firefox中打开0.0.0.0:3000
,它将完美运行!
(您也可以使用localhost:3000
或127.0.0.1:3000
)