我有一个博客风格的网站,每个文章下都有用户登录后通常的“查看”“编辑”和“删除”功能。问题是当我点击“删除”它发送的链接时您进入“查看”文章页面并且不删除该文章。由于删除和查看路径在我的代码中有所不同,但做同样的事情...... ??
,因此无法弄清楚这一点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 />
答案 0 :(得分:1)
这可能是因为您没有设置正确的javascript文件。当您单击链接时,Rails 3使用不显眼的JavaScript来创建DELETE
请求。如果javascript无效,它将回退到执行GET
操作的show
。
确保您的布局中包含rails.js
和prototype.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
英语不好的故事:)