【问题标题】:jQuery not working at delete action on Michael Hartl's tutorial, chapter 11jQuery not working at delete action on Michael Hartl's tutorial, Chapter 11
【发布时间】:2011-11-25 02:47:29
【问题描述】:

我正在编写 Michael Hartl 的 Rails 教程,就像其他 Rails 新手一样。 无论如何,我也被困在第 11 章,有些 JQuery 无法处理删除操作问题。也就是说,当点击任何删除按钮时,它只会将我重定向到一个特定的错误页面,上面写着“没有路由匹配 [GET]”/microposts/301”

我在 _micropost.html.erb 页面中的代码如下:

<tr>
  <td class="micropost">
    <span class="content"><%= micropost.content %></span>
    <span class="timestamp">
      Posted <%= time_ago_in_words(micropost.created_at) %> ago.
    </span>
  </td>
  <% if current_user?(micropost.user) %>
  <td>
    <%= link_to "delete", micropost, :method => :delete,
                                     :confirm => "You sure?",
                                     :title => micropost.content %>
  </td>
  <% end %>
</tr>

所以,我检查了我的 gem 文件是否有原型和 jQuery 冲突。 我发现如下

source 'http://rubygems.org'

gem 'rails', '3.1.1'
gem 'annotate', :git => 'git://github.com/ctran/annotate_models.git'

# 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'
# 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

gem 'jquery-rails'


group :development do
  gem 'rspec-rails', '2.6.1'
  gem 'faker', '0.3.1'
end

group :test do
  gem 'rspec-rails', '2.6.1'
  gem 'webrat', '0.7.1'
  gem 'factory_girl_rails', '1.0'
end

group :production do
  gem 'therubyracer-heroku', '~> 0.8.1.pre3', :platform => :ruby
  #gem 'therubyracer-heroku', '0.8.1.pre3' # you will need this too
  gem 'pg'
end

所以,我很确定这里没有安装原型,因为我听说 Rails 3.1 以后默认使用 jQuery。

您有什么建议可以让它为我工作吗?在哪里检查我的 jQuery 是否已正确安装。

根据@Tuck 的建议,我在这里发布了我的 routes.rb。

SampleApp::Application.routes.draw do
  resources :users
  resources :sessions, :only => [:new, :create, :destroy]
  resources :microposts, :only => [:create, :destroy]

  match '/signup',  :to => 'users#new'
  match '/signin',  :to => 'sessions#new'
  match '/signout', :to => 'sessions#destroy'

  match '/contact', :to => 'pages#contact'
  match '/about',   :to => 'pages#about'
  match '/help',    :to => 'pages#help'

  root :to => 'pages#home'

  get "pages/home"

  get "pages/contact"

  get "pages/about"

end

【问题讨论】:

  • 您可以通过在“脚本”部分检查 Firebug/Chrome 来检查 jQuery 是否正在加载。但更有可能是路由或控制器的问题。

标签: jquery ruby-on-rails


【解决方案1】:

虽然我从未使用过 RoR,但您似乎遇到了任何使用 MVC 框架的开发人员都面临的经典问题 - 即 yoru link_to 处理程序中的操作指向无效路由。根据您的代码,很明显 micropost 是您的模型,但我们不知道该模型被发送到哪里...您能否a)查看脚本的 html 输出(使用浏览器的内置开发人员工具或只需查看源代码)并验证生成的 url 是否有效和/或 b)发布为您的应用程序配置的路由映射?发布一个/或将使社区更容易帮助您解决问题...

【讨论】:

  • 我现在开始工作了!我从查看源页面追溯代码,一一检查每个引用,然后发现 jquery 相关文件不在其预期位置。所以,我只是从另一个工作应用程序文件夹中复制了 jquery.js 和 jquery_ujs.js。现在,它就像一个魅力。
【解决方案2】:

检查你是否看到这条线 在你的布局文件 application.html.erb

如果您没有它,那么您的删除脚本将无法工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多