博客删除操作错误?

时间:2011-05-17 15:20:31

标签: ruby-on-rails-3 routes

我有一个博客风格的网站,每个文章下都有用户登录后通常的“查看”“编辑”和“删除”功能。问题是当我点击“删除”它发送的链接时您进入“查看”文章页面并且不删除该文章。由于删除和查看路径在我的代码中有所不同,但做同样的事情...... ??

,因此无法弄清楚这一点
class ArticlesController < ApplicationController

  before_filter :authenticate_user!, :except => [:index, :show]

# GET /articles
# GET /articles.xml
# display the amount of article on the home page

def index
@articles = Article.published.page(params[:page]).per(6).ordered

respond_to do |format|
  format.html # index.html.erb
 # format.atom #index.atom.builder
  format.xml  { render :xml => @articles }
end
end


 # GET /articles/1
 # GET /articles/1.xml
def show
  @article = Article.find(params[:id])
  @comment = Comment.new(:article=>@article)

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @article }
end
end

...

/ controllers / articles_controller

# DELETE /articles/1.xml
 def destroy
@article = Article.find(params[:id])
 authorize! :destroy, @article
@article.destroy

respond_to do |format|
  format.html { redirect_to(articles_url) }
  format.xml  { head :ok }
  end
 end
end

视图/物品/ _article.html.erb

<div class= "art-links">
<%= link_to 'Read', article %>
  <% if can? :update, article %>
 | <%= link_to 'Edit', edit_article_path(article) %> |      
 <% end %>

 <% if can? :destroy, article %>
  <%= link_to 'Delete', article, :confirm => 'Are you sure?', :method => :delete %>
<% end %>
  </div>
<br />


3 个答案:

答案 0 :(得分:1)

这可能是因为您没有设置正确的javascript文件。当您单击链接时,Rails 3使用不显眼的JavaScript来创建DELETE请求。如果javascript无效,它将回退到执行GET操作的show

确保您的布局中包含rails.jsprototype.js。如果您使用的是非Prototype的javascript框架,则需要使用该框架(jQuery或其他)以及rails.js的相应端口。

答案 1 :(得分:0)

这一行

format.html { redirect_to(articles_url) }

应该将它发送回您的索引操作,您想在哪里结束?

答案 2 :(得分:0)

这种情况也发生在我的项目中。

Finnaly我知道原因。这是因为我在app/assets/javascript中的application.js被我在尝试探索bootstap时复制的另一个application.js所取代。

我只需添加这3行:

  

// = require jquery

     

// = require jquery_ujs

     

// = require jquery-ui

到顶行的application.js即可。

并把这个

  

在我的app / views / layout / application.html.erb

它工作..

如果jquery已安装n仍然像我一样错误:D

英语不好的故事:)