2017-05-31 64 views
1

我試圖使用datatables和列刪除行項目的索引視圖使用bootstrap確認。我讓它在沒有確認的情況下工作,或者使用默認確認,但是沒有使用bootstrap-confirmation,它會將我發送到show方法,而不是控制器的刪除方法。它像它看不到方法::刪除bootstrap-confiirmation不處理方法:在rails應用程序中刪除

這是我在索引視圖中調用它的方式。彈出確認顯示,但是當我點擊確定時,它會將我發送到顯示頁面。

<td><%= link_to '<i class="fa fa-trash-o fa-lg"></i>'.html_safe, role_path(id: role.id), method: :delete, :'data-toggle' => 'confirmation', :'data-copy-Attributes' => 'href data-method'%></td> 

這下面的工作(沒有確認),所以我知道我的路線,控制器行動等工作。

<td><%= link_to '<i class="fa fa-trash-o fa-lg"></i>'.html_safe, role_path(id: role.id), method: :delete, %></td> 

任何想法?

繼承人我的觀點:

<h1> Roles</h1> 
</br> 

<table width="100%" class="table table-striped table-bordered table-hover" id="roles-table"> 
    <thead> 
    <tr> 
     <th>Roles</th> 
     <th>User Count</th> 
     <th>Delete Role</th> 
    </tr> 
    </thead> 
    <tbody> 
    <% @roles.each do |role| %> 
    <tr> 
     <td><%= role.name %> 
     <td><%= role.users.count %></td> 
     <% if (role.users.count == 0) %> 
     <!--td><%= link_to '<i class="fa fa-trash-o fa-lg"></i>'.html_safe, role_path(id: role.id), method: :delete, :data => {:confirm => 'Are you sure?'}%></td--> 
     <td><%= link_to '<i class="fa fa-trash-o fa-lg"></i>'.html_safe, role_path(id: role.id), method: :delete, :'data-toggle' => 'confirmation', :'data-copy-Attributes' => 'href data-method'%></td> 

     <% else %>< 
     <td></td> 
     <% end %> 
    </tr> 
    <% end %> 
    </tbody> 
</table> 
<br> 
<%= link_to "Add Role", new_role_path, class: "btn btn-success"%> 
+0

你能嘗試用'​​ <%= link_to角色,方法:: delete,data:{toggle:'confirmation',copy:{屬性:'href data-method'}} do%> <% end %> '? –

+0

感謝您的建議,但我得到同樣的問題。轉到展示頁面。看起來像刪除方法沒有通過您提供的語法通過,因爲當我檢查彈出確認按鈕時,它顯示: Yes

+0

您可以添加您的視圖? –

回答

0

我不能讓圖書館工作,因爲它不提供一種方式來編輯它生成的HTML彈出,因此,它也把我的鏈接show方法無法刪除它。

所以我所做的就是創建一個路由刪除預計將收到來自資源的PARAMS的id和值delete資源:

get 'role/:id/:delete', to: 'role#show', as: 'show_role' 

然後在你的控制器,你可以檢查你receving一個delete PARAM,爲了showdestroy之間分開,如果你接受它,然後你毀了它,並重定向到roles_url

def show 
    @role = Role.find(params[:id]) 
    if params[:delete] 
    @role.destroy 
    redirect_to roles_url 
    end 
end 

然後在您的視圖中,可以使用link_to幫手,通過先前創建傳遞資源,爲delete PARAM值的路線,加上數據屬性引導確認需要,使其工作:

<%= link_to 'Destroy', show_role_path(role, delete: true), data: { toggle: 'confirmation', title: 'Delete it?' } %> 
+0

謝謝Sebastian看看這個。雖然你的解決方案很有創意,但我真的不想使用需要路由調整的確認,因爲每個控制器都需要這個,所以我想我將不得不使用不同的確認類型。也許sweetalert2,因爲它使用常規導軌方法進行數據確認 –