2016-07-07 8 views
0

私はプロジェクトを削除するが、リダイレクトしない削除ボタンがあります。私はそれが問題であるかどうかわからないので、編集ビューで削除しています。私はチェックして、それは削除して取得するように設定されていません。削除ボタンは破棄されますが、レールにリダイレクトされません

これは、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_toremote: trueで設定されています。これは、リダイレクトがその呼び出しのコンテキストで行われるように、リンクがajax呼び出しを介してサブミットされることを意味します。

remote: trueを削除するか、delete.js.erbビューを作成して、deleteアクションからリダイレクトするパスを返す必要があります。ビューでwindow.locationをこの新しいパスに設定することができます。

+0

これはうまくいきました!大変ありがとう! – LaFrish

関連する問題