删除 link 不工作的凤凰
Delete link not working phoenix
我使用 Phoenix 的内置 gen.HTML 生成了一个简单的视图,但它不起作用
<%= link "Delete", to: event_path(@conn, :delete, event), method: :delete, data: [confirm: "Are you sure?"], class: "btn btn-danger btn-xs" %>
在页面上它看起来应该是这样,但它只是将 # 附加到地址
生成的结构:
<form action="/event/1" class="link" method="post">
<input name="_method" type="hidden" value="delete">
<input name="_csrf_token" type="hidden" value="BwUSGQcDO1MwPzw0HBgqLnshHn8HNgAAnCTjuMt0viFshobX4XM/dQ==">
<a class="btn btn-danger btn-xs" data-confirm="Are you sure?" data-submit="parent" href="#">Delete</a>
</form>
我是否缺少某种 js 导入?
我也可以通过浏览器下载这个:
//This is being downloaded as phoenix_html.js
// Although ^=parent is not technically correct,
// we need to use it in order to get IE8 support.
var elements = document.querySelectorAll('[data-submit^=parent]')
var len = elements.length
for (var i=0; i<len; ++i) {
elements[i].addEventListener('click', function(event){
var message = this.getAttribute("data-confirm")
if(message === null || confirm(message)){
this.parentNode.submit()
};
event.preventDefault()
return false
}, false)
}
编辑:这恰好是已知问题。这是修复:
In brunch-config.js
autoRequire: {
"js\app.js": ["web/static/js/app"]
}
虽然不是针对 OP 问题的特定解决方案,但如果您将
<script src="<%= static_path(@conn, "/js/app.js") %>"></script>
在 app.html.eex
中的错误位置。 (例如在 <head>
内而不是在正文末尾)
对于遇到此问题的其他人,我遇到了一个完全不同的问题,该问题以相同的方式表现出来,如果有帮助,我会把它放在这里:
原来我不小心从 app.js 文件中删除了 import "phoenix_html"
,误以为它是生成的样板文件的一部分,将其添加回来解决了我的问题。
我最近遇到了同样的问题,结果是我不小心从我的 layout.html.eex
文件中删除了 <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
。将其添加回去解决了问题。
对于更高版本的 Phoenix,如果您查看 priv/static/js/app.js
中的 app.js 文件,您会注意到一条注释将 link 引用到原始 github js文件。 Javascript 的这一小片段包含重要代码,可确保 delete
link 帮助程序真正正常工作。
我使用 Phoenix 的内置 gen.HTML 生成了一个简单的视图,但它不起作用
<%= link "Delete", to: event_path(@conn, :delete, event), method: :delete, data: [confirm: "Are you sure?"], class: "btn btn-danger btn-xs" %>
在页面上它看起来应该是这样,但它只是将 # 附加到地址
生成的结构:
<form action="/event/1" class="link" method="post">
<input name="_method" type="hidden" value="delete">
<input name="_csrf_token" type="hidden" value="BwUSGQcDO1MwPzw0HBgqLnshHn8HNgAAnCTjuMt0viFshobX4XM/dQ==">
<a class="btn btn-danger btn-xs" data-confirm="Are you sure?" data-submit="parent" href="#">Delete</a>
</form>
我是否缺少某种 js 导入? 我也可以通过浏览器下载这个:
//This is being downloaded as phoenix_html.js
// Although ^=parent is not technically correct,
// we need to use it in order to get IE8 support.
var elements = document.querySelectorAll('[data-submit^=parent]')
var len = elements.length
for (var i=0; i<len; ++i) {
elements[i].addEventListener('click', function(event){
var message = this.getAttribute("data-confirm")
if(message === null || confirm(message)){
this.parentNode.submit()
};
event.preventDefault()
return false
}, false)
}
编辑:这恰好是已知问题。这是修复:
In brunch-config.js
autoRequire: {
"js\app.js": ["web/static/js/app"]
}
虽然不是针对 OP 问题的特定解决方案,但如果您将
<script src="<%= static_path(@conn, "/js/app.js") %>"></script>
在 app.html.eex
中的错误位置。 (例如在 <head>
内而不是在正文末尾)
对于遇到此问题的其他人,我遇到了一个完全不同的问题,该问题以相同的方式表现出来,如果有帮助,我会把它放在这里:
原来我不小心从 app.js 文件中删除了 import "phoenix_html"
,误以为它是生成的样板文件的一部分,将其添加回来解决了我的问题。
我最近遇到了同样的问题,结果是我不小心从我的 layout.html.eex
文件中删除了 <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
。将其添加回去解决了问题。
对于更高版本的 Phoenix,如果您查看 priv/static/js/app.js
中的 app.js 文件,您会注意到一条注释将 link 引用到原始 github js文件。 Javascript 的这一小片段包含重要代码,可确保 delete
link 帮助程序真正正常工作。