我有一个博客风格的网站,在每篇文章下都有用户登录后通常的"查看"编辑"和"删除"功能。问题是当我单击"删除"它发送给您的"查看"文章页面的链接并且不会删除文章时。无法弄清楚这一点,因为我的代码中的删除和查看路径不同,但做同样的事情......??
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
...
/控制器/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 />
这可能是因为您没有设置正确的 javascript 文件。Rails 3 使用不显眼的 JavaScript 在单击链接时创建DELETE
请求。如果 javascript 不起作用,它将回退到执行GET
,这将呈现show
操作。
确保布局中有rails.js
和prototype.js
。如果您使用的是 Prototype 以外的 JavaScript 框架,则需要拥有该框架(jQuery 或其他任何框架)以及适当的 rails.js
端口。
此行
format.html { redirect_to(articles_url) }
应该将其发送回您的索引操作,您希望在哪里结束?
这种情况也发生在我的项目中。
我知道原因。这是因为我的应用程序位于app/assets/javascript
.js被另一个application.js
所取代,当我尝试探索引导程序时,我复制了该应用程序。
我只是简单地将这 3 行加回来:
//= 需要 jquery
//= 需要jquery_ujs
//= 需要 jquery-ui
到顶排的application.js
就可以了。
并把这个
在我的应用程序/视图/布局/应用程序.html.erb
它工作..
如果 jquery 已经安装 n 仍然像我一样错误:D
英语不好:)