代码之家  ›  专栏  ›  技术社区  ›  LaFrish

删除按钮会破坏但不会在轨道中重定向

  •  0
  • LaFrish  · 技术社区  · 9 年前

    我有一个删除按钮,删除项目,但不重定向。我正在编辑视图中删除,所以我不确定这是否是问题所在。我确实检查过,它被设置为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
    

    哈姆:

    %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 回复  |  直到 9 年前
        1
  •  1
  •   Nic Nilov    9 年前

    你的 link_to 设置为 remote: true

    您需要删除 远程:true 或创建 delete.js.erb 查看并返回要重定向到的路径 delete 行动然后可以在视图中设置 window.location 走上这条新路。