2016-07-07 32 views
0

我有一個刪除按鈕,刪除項目但不重定向。我在編輯視圖中刪除,所以我不確定這是否是問題。我沒有檢查,它被設置爲DELETE而不是GET。刪除按鈕銷燬但不重定向在欄杆中

這是一個使用HAML的Ruby on Rails應用程序。

途徑:

      projects GET  /projects(.:format)                 projects#index 
            POST  /projects(.:format)                 projects#create 
         new_project GET  /projects/new(.:format)                projects#new 
         edit_project GET  /projects/:id/edit(.:format)              projects#edit 
          project PATCH  /projects/:id(.:format)                projects#update 
            PUT  /projects/:id(.:format)                projects#update 
            DELETE /projects/:id(.:format)                projects#destroy 

Haml的:

%div.actions-group-delete 
.right 
    - if can? :destroy, @project 
    = link_to project_path(@project), method: :delete, remote: true, data: { confirm: 'Are you sure you want to permanently delete this project?' }, class: "btn btn--primary btn--auto btn--short btn--delete", title: "Delete project" do 
     %i.icon.icon-trash 

項目控制器:

def destroy 
    @project_id = params[:id] 
    project = Project.accessible_by(current_ability).find_by!(id: @project_id) 

    authorize! :destroy, @project 

    if @project.destroy.update_attributes(id: @project_id) 
     flash[:success] = "The Project was successfully deleted." 
     redirect_to projects_path 
    else 
     flash[:error] = "There was an error trying to delete the Project, please try again later." 
     redirect_to edit_project_path(@project) 
    end 
    end 

項目模型:

class Project < ActiveRecord::Base 
    belongs_to :user 
    has_many :project_items, -> { order("code ASC, name ASC") }, dependent: :destroy 

    has_many :project_workers, dependent: :destroy 
    has_many :workforces, through: :project_workers 
    has_many :worked_hours, through: :project_workers 

    has_many :project_equipments, dependent: :destroy 
    has_many :equipments, through: :project_equipments 
    has_many :equipment_hours, through: :project_equipments 

    has_many :collaborators, dependent: :destroy 
    has_many :used_items, dependent: :destroy 
    has_many :reports, dependent: :destroy 

    # has_many :items_used, dependent: :destroy, through: :project_items, source: :used_items 

    accepts_nested_attributes_for :project_items, allow_destroy: true 
    accepts_nested_attributes_for :project_workers, allow_destroy: true 
    accepts_nested_attributes_for :project_equipments, allow_destroy: true 
    accepts_nested_attributes_for :collaborators 

回答

1

您的link_to設置爲remote: true。這意味着鏈接通過ajax調用提交,因此重定向發生在該調用的上下文中。

您需要刪除remote: true或創建delete.js.erb視圖,並返回從delete操作重定向到的路徑。在視圖中,您可以將window.location設置爲此新路徑。

+0

工作!謝謝你太多了! – LaFrish