路由错误没有路由匹配[GET]“/ microposts / 304 - 删除一个Micropost - Michael Hartl的railstutorial.org第11章

时间:2011-11-23 01:07:33

标签: jquery ruby-on-rails ruby ruby-on-rails-3 rubygems

我正在http://ruby.railstutorial.org处理Michael Hartl的Ruby on Rails教程。我在第11章遇到了麻烦,特别是在尝试删除微博时。

我遇到与此用户Routing Error No route matches [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 server命令时出现错误No Javascript runtime on windows when running rails server,但一旦我注释掉'sass-rails''coffee-rails''uglifier'宝石它会成功运行。我正在使用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输出:

(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"}

以下是使用delete方法的部分视图文件:

<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这个问题。

2 个答案:

答案 0 :(得分:2)

我认为你错过了这两个中的一个。

//= require jquery
//= require jquery_ujs

我不小心删除了// = require jquery_ujs,这给了我同样的问题。

答案 1 :(得分:0)

您是否在自己的应用中使用了原型和jquery? 我可以看到你正在使用jquery-rails gem,但原型也存在吗?
检查两者是否都被加载,因为它们相互冲突。