Rails返回DELETE视图的错误>没有路由匹配“/ assets”
当我点击“删除”链接(删除项目)时,我希望显示一个新页面供用户确认删除(“你确定”页面)。 但是当我点击链接时,错误没有路由匹配[GET]“/ assets”出现,我不知道为什么。 谁能帮我?
这是我的projects / index.html.erb
1 2 3 4 'delete', :controller => 'projects', :id => p.id } %> 5
这是我的controllers / projects_controller.rb
38 def delete 39 @project = Project.find(params[:id]) 40 render 'delete' 41 end 42 43 def destroy 44 project = Project.find(params[:id]) 45 project.destroy 46 flash[:notice] = "Page succesfully removed" 47 redirect_to(projects_path) 48 end
这是我的views / projects / delete.html.erb
1 {:action => 'destroy', :id => @project.id }) do |f| %> 2 Are you sure you want to remove ""
3 <%= submit_tag ("Yes, I am sure") 4
编辑:我的url看起来像这样>>> http:// localhost:3000 / assets?action = delete&controller = projects&id = 1
EDIT2: 解决方案是route.rb并添加此行
match ':controller(/:action(/:id))(.:format)'
现在出现删除页面。 但是,当我单击删除按钮Rails返回错误>>未知操作无法找到ProjectsController的操作’6′
问题是这一行:
<%= form_for(:project, :url => {:action => 'destroy', :id => @project.id }) do |f| %>
在进行此操作时,您没有告诉它使用HTTP方法DELETE
<%= form_for(:project, :url => {:action => 'destroy', :id => @project.id }, :method => :delete) do |f| %>
你也可以写这么多,比这更短:
<%= form_for(@project, :method => :delete) do |f| %>
Rails将准确知道要构建的URL,因此您无需告诉它该做什么。
奖金
您也可以使用初始link_to
执行此操作:
<%= link_to "delete", [:delete, project], :method => :delete %>
这里作为第二个参数的数组将使用Rails中的多态路由构建器编译路由。