![](/img/trans.png)
[英]default_actions in activeadmin in rails doesnt make “delete” button create destroy link
[英]Why are default javascript files required to create a destroy link in rails?
我今天想在Rails中創建一個基本的“destroy”鏈接,所以我寫了這個:
<%= link_to "destroy me", @company, :method=>:delete
%>
生成的代碼是:
<a href="/companies/1"
data-method="delete"
rel="nofollow">destroy me</a>
在我的路線,通常
resources :companies
我的摧毀行動在我的控制器里。
但是無論何時我點擊鏈接,我都會被重定向到show
動作。 奇怪的。
事實證明我的布局中沒有包含以下行:
<%= javascript_include_tag :defaults %>
包含它后,銷毀鏈接有效!
為什么? 為什么我需要包含默認的javascript標記才能使其正常工作?
由於我不想使用原型,我如何只包含我需要的文件?
從3.0開始,Rails表單助手生成帶有HTML5數據屬性的干凈HTML標簽(在您的示例中為數據方法)。 為了支持這些數據屬性,原型需要rails.js。 如果你使用jQuery,則需要jQuery版本(https://github.com/rails/jquery-ujs)。
簡單地說,rails.js與javascript框架(prototype或jquery)一起做了一些魔術來掛鈎標簽上的點擊和其他事件,其他明智的當你點擊一個鏈接,正常點擊發生因為沒有javascript,鏈接是正常的鏈接。
這是因為html的局限性以及錨標簽無法使用除GET之外的任何方法提交請求的事實。
如果查看rails.js(將包含在:defaults
),當您單擊具有“data-method”的鏈接時,它會生成並提交一個表單,該表單使用正確的http方法提交到指定的URL。錨標記。
這是一個解決方法的黑客,但實際上沒有任何其他選項可以使普通錨標記提交DELETE請求(或任何其他HTTP動詞而不是GET)。
如果您不想使用js,請使用表單(可能使用button_to而不是link_to)來發出請求。 如果您創建自己的幫助程序來構建表單,您可以使用按鈕標記(而不是rails構建的輸入),這非常容易使樣式看起來像普通鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.