我正在阅读 Michael Hartl 的 Ruby on Rails 教程http://ruby.railstutorial.org。我在阅读第 11 章时遇到了问题,特别是在尝试删除微博时。
我和该用户遇到同样的问题路由错误 没有路由匹配 [GET]“/microposts/304”。他通过注释掉 jQuery gem 解决了这个问题,并且成功了。然而我就没那么幸运了。
这是我当前的 Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.1.1'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
gem 'gravatar_image_tag', '1.0.0.pre2'
gem 'will_paginate', '3.0.pre2'
gem 'jquery-rails'
gem 'pg'
group :development do
gem 'faker', '0.3.1'
end
# Gems used only for assets and not required
# in production environments by default.
#group :assets do
# gem 'sass-rails', '~> 3.1.4'
# gem 'coffee-rails', '~> 3.1.1'
# gem 'uglifier', '>= 1.0.3'
#end
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
group :test do
# Pretty printed test output
gem 'turn', :require => false
end
=> 一个简短的旁注:一个错误运行 Rails 服务器时,Windows 上没有 Javascript 运行时当我运行时不断出现rails server
命令但是一旦我注释掉了'sass-rails'
, 'coffee-rails'
, and 'uglifier'
gems 它会成功运行。我使用的是 Windows PC,并被告知这可能是 Windows 计算机的特定问题。
另外,这是我目前的结果bundle install
命令:
Using rake (0.9.2.2)
Using multi_json (1.0.3)
Using activesupport (3.1.1)
Using builder (3.0.0)
Using i18n (0.6.0)
Using activemodel (3.1.1)
Using erubis (2.7.0)
Using rack (1.3.5)
Using rack-cache (1.1)
Using rack-mount (0.8.3)
Using rack-test (0.6.1)
Using hike (1.2.1)
Using tilt (1.3.3)
Using sprockets (2.0.3)
Using actionpack (3.1.1)
Using mime-types (1.17.2)
Using polyglot (0.3.3)
Using treetop (1.4.10)
Using mail (2.3.0)
Using actionmailer (3.1.1)
Using arel (2.2.1)
Using tzinfo (0.3.31)
Using activerecord (3.1.1)
Using activeresource (3.1.1)
Using ansi (1.4.1)
Using bundler (1.0.21)
Using faker (0.3.1)
Using gravatar_image_tag (1.0.0.pre2)
Using rack-ssl (1.3.2)
Using json (1.6.1)
Using rdoc (3.11)
Using thor (0.14.6)
Using railties (3.1.1)
Using jquery-rails (1.0.17)
Using pg (0.11.0)
Using rails (3.1.1)
Using sqlite3 (1.3.4)
Using turn (0.8.3)
Using will_paginate (3.0.pre2)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem
is installed.
我不知道如何解决这个问题。我是否需要安装特定的 gem 才能使删除方法起作用?我感谢您的帮助!
这里是rake routes
output:
(in C:/rails_projects/sample_app)
users GET /users(.:format) {:action=>"index", :controller=>"us
ers"}
POST /users(.:format) {:action=>"create", :controller=>"u
sers"}
new_user GET /users/new(.:format) {:action=>"new", :controller=>"user
s"}
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"use
rs"}
user GET /users/:id(.:format) {:action=>"show", :controller=>"use
rs"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"u
sers"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"
users"}
sessions POST /sessions(.:format) {:action=>"create", :controller=>"s
essions"}
new_session GET /sessions/new(.:format) {:action=>"new", :controller=>"sess
ions"}
session DELETE /sessions/:id(.:format) {:action=>"destroy", :controller=>"
sessions"}
microposts POST /microposts(.:format) {:action=>"create", :controller=>"m
icroposts"}
micropost DELETE /microposts/:id(.:format) {:action=>"destroy", :controller=>"
microposts"}
signup /signup(.:format) {:controller=>"users", :action=>"ne
w"}
signin /signin(.:format) {:controller=>"sessions", :action=>
"new"}
signout /signout(.:format) {:controller=>"sessions", :action=>
"destroy"}
contact /contact(.:format) {:controller=>"pages", :action=>"co
ntact"}
about /about(.:format) {:controller=>"pages", :action=>"ab
out"}
help /help(.:format) {:controller=>"pages", :action=>"he
lp"}
root / {:controller=>"pages", :action=>"ho
me"}
这是使用删除方法的部分视图文件:
<tr>
<td class="micropost">
<span class="content"><%= micropost.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
</td>
<% user = micropost.user rescue User.find(micropost.user_id) %>
<% if current_user?(user) %>
<td>
<%= link_to "delete", micropost, :method => :delete,
:confirm => "You sure?",
:title => micropost.content %>
</td>
<% end %>
</tr>
再次强调一下,源码可以在Github上查看https://github.com/railstutorial/sample_app,它似乎无法在我的机器上正常运行,这让我相信它是这样的user's问题。