2017-07-02 63 views
-1

破壞方法我有以下兩種方法消滅一個用戶控制器: -Rails的路線混淆定製的破壞方法與用戶控制器

def destroy 
    @user = User.find_by(params[:id]) 
    @user.destroy 
    flash[:success] = "Account successfully closed" 
    redirect_to root_path 
    end 

    def destroy_avatar 
    @user = User.find_by(params[:id]) 
    @user.remove_avatar! 
    @user.save 
    render 'edit' 
    end 

首先是默認摧毀刪除用戶的方法。第二個是我定義的讓用戶從他們的用戶編輯頁面刪除他們的頭像的一個。

我有以下的routes.rb中定義得到destroy_avatar工作: -

delete '/users/:id', to: 'users#destroy_avatar', as: 'destroy_avatar' 
resources :users 

但不幸的是,當我實現了這個關閉帳戶按鈕我不得不收歸destroy_avatar操作的用戶編輯頁面。

這是調用都從該視圖的操作: -

. 
. 
. 
     <% if current_user.avatar_url %> 
      <%= link_to "Delete avatar", destroy_avatar_path, 
       method: :delete, 
       data: {:confirm => 'Are you sure?'}, 
       class: 'btn btn-xs btn-danger', 
       "data-toggle" => "tooltip", 
       "data-placement" => "right", 
       "title" => "Delete avatar" %> 
. 
. 
. 
     <%= link_to "Close account", user_path(@user), 
            method: :delete, 
            data: {:confirm => "Are you sure?"}, 
            class: "btn btn-xs btn-danger"%> 
. 
. 
. 

我去尋找,看看是否有辦法讓destroy_avatar不使用航線的工作,但我發現了一個way到用AJAX做,而不需要額外的路線,這實際上會更方便,但我不知道Javascript,並且無法自定義代碼。

我還在學習rails,我不知道我不知道!所以我想知道我有什麼選擇。

有沒有辦法做到這一點,而不使用兩個路線?如果不是,我應該如何自定義destroy_avatar的路由,以便與用戶銷燬操作的路由沒有衝突?

+0

嘗試改變'刪除 '/用戶/:身份證',爲: '用戶#destroy_avatar',因爲:「destroy_avatar ''to'delete'/ user_avatar /:id',to:'users#destroy_avatar',as:'destroy_avatar'' – Pavan

回答

0

好吧,我想通了。

改變了路線

delete '/users/:id/destroy_avatar', to: 'users#destroy_avatar', as: 'destroy_avatar' 

,並從該視圖:

<%= link_to "Delete avatar", "https://stackoverflow.com/users/#{@user.id}/destroy_avatar" %> 
+0

您可以使用'destroy_avatar_path(@user)' – Pavan