【问题标题】:Delete link not working phoenix删除链接不起作用凤凰
【发布时间】:2016-03-20 06:26:48
【问题描述】:

我使用 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)
}

【问题讨论】:

  • 您认为import App.Router.Helpersalias App.Endpoint 有吗?
  • 没有。但没有帮助
  • 我相信您已将App 更改为您的真实应用程序名称,对吧?这也可能会有所帮助:phoenixframework.org/docs/routing#section-more-on-path-helpers
  • 顺便说一句,你会尝试从你的视野中只看到IO.puts eventevent_path(@conn, :delete, event) 吗?
  • 页面没有被重新加载,# 只是被附加到地址。控制器中的动作永远不会被调用。这是客户端的问题。

标签: elixir phoenix-framework


【解决方案1】:

对于 Phoenix 的更高版本,如果您查看 priv/static/js/app.js 中的 app.js 文件,您会注意到引用原始 github js 文件链接的注释。这个小 Javascript 的 sn-p 包含重要的代码,以确保 delete 链接助手真正正常工作。

【讨论】:

    【解决方案2】:

    对于其他遇到此问题的人,我遇到了一个完全不同的问题,它以相同的方式表现出来,如果有帮助,将把它放在这里:

    原来我不小心从 app.js 文件中删除了import "phoenix_html",误以为它是生成的样板文件的一部分,将其添加回来解决了我的问题。

    【讨论】:

    • 谢谢。
    【解决方案3】:

    我最近遇到了同样的问题,原来我不小心从我的layout.html.eex 文件中删除了&lt;script src="&lt;%= static_path(@conn, "/js/app.js") %&gt;"&gt;&lt;/script&gt;。添加回来解决了这个问题。

    【讨论】:

      【解决方案4】:

      编辑:这恰好是已知问题。这是修复:

      In brunch-config.js
      autoRequire: {
        "js\\app.js": ["web/static/js/app"]
      }
      

      Source

      【讨论】:

      • 嗯。我遇到了同样的问题(很久以后,来自未来的你好!),但是允许js/endpoint.ex 不应该修复它吗?还是这是已知问题?
      • @kiminoa 这是已知问题。
      • 我遇到了同样的问题,有人能解决这个问题吗
      【解决方案5】:

      虽然不是 OP 问题的特定解决方案,但如果您放置,也会出现此错误

      &lt;script src="&lt;%= static_path(@conn, "/js/app.js") %&gt;"&gt;&lt;/script&gt;

      app.html.eex 的错误位置。 (例如在&lt;head&gt; 内而不是在正文的末尾)

      【讨论】:

      • 我把它改回了身体的末端,它开始工作了。谢了哥们。但是想不通为什么会这样?
      猜你喜欢
      • 1970-01-01
      • 2017-01-29
      • 2015-09-09
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      相关资源
      最近更新 更多