Bootstrap 使用 Phoenix 的删除方法进行样式设置

Bootstrap Styling with Phoenix's Delete Method

我的 bootstrap 导航栏中会显示各种 link,例如登录、注册、访问页面和注销。当我在 link 助手中使用 delete 方法时,我丢失了我的默认值 bootstrap CSS。例如下面的 link 助手:

<li><%= link "Register", to: user_path(@conn, :new) %></li>

生成以下内容html:

<li><a href="/users/new">Register</a></li>

但是如果我想要删除方法,比如登出时:

<li><%= link "Log out", to: session_path(@conn, :delete, @current_user), method: "delete" %></li>

它生成的表格如下:

<li><form action="/sessions/3" class="link" method="post">
  <input name="_method" type="hidden" value="delete">
  <input name="_csrf_token" type="hidden" value="QA1vDhw/PhoBcgIwCgJJVCQPJQ4FAAAA/U8oImxsGBgDOF+crLSodA==">
  <a data-submit="parent" href="#" rel="nofollow">Log out</a>
</form></li>

现在我的锚标记在一个表单中,我已经丢失了我的默认值 CSS。

我使用自定义 class 修复了它:

.bad-bootstrap-link {
  position: relative;
  display: block;
  padding: 10px 15px;
  padding-top: 15px;
  padding-bottom: 15px;
  color: #777;
}

这是唯一的方法吗?我错过了什么吗?这非常不方便,我必须重新定义 CSS 样式才能删除 links.

我遇到了完全相同的问题,我添加了 bootstrap css class navbar-text 如下所示 Bootstrap 3。我.

<li><%= link gettext("logout"), to: session_path(@conn, :delete, @current_user), method: "delete", class: "navbar-text" %></li>

对于 Bootstrap 4 我使用 classes nav-item nav-link:

<li><%= link gettext("logout"), to: session_path(@conn, :delete, @current_user), method: "delete", class: "nav-item nav-link" %></li>

您可以隐藏表单,然后添加另一个 link 来提交表单。这有点 hacky,但另一种方法是深入研究 CSS 文件或深入研究 JS 文件。

<li>
  <%= link "Logout", to: auth_path(@conn, :logout), method: "delete", class: "hidden", id: "logout-form" %>
  <%= link "Logout", to: "#", onclick: "document.getElementById('logout-form').parentNode.submit();return false;" %>
</li>

我使用以下 css 规则解决了这个问题:

form[method=post].link {
  display: initial;
}

之前

之后