【问题标题】:form_for adds a div-container with css-styleform_for 添加了一个具有 css 样式的 div 容器
【发布时间】:2014-04-09 13:53:42
【问题描述】:

是否有机会删除 RoR 创建的 div 容器?

输入:

<%= form_for @user, :as => :user, :url => user_sign_in_path(@user) do |f| %>
<p>

输出:

<form accept-charset="UTF-8" action="/user/sign_in" class="new_user" id="new_user" method="post">
    <div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="MT0OhRtfupZvi28m7bFN31JdZXyiFCGisbENml4cdcg=" /></div>
    <p>

<div style="margin:0;padding:0;display:inline">

我不想这样!

有两个hidden-text-inputs是正常的吗?

<input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="MT0OhRtfupZvi28m7bFN31JdZXyiFCGisbENml4cdcg=" />

【问题讨论】:

    标签: css ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    这是form_for 的默认行为。这是官方对此的解释:

    HTML 包含一些额外的东西:一个带有两个隐藏输入的 div 元素 里面的元素。这个 div 很重要,因为表单不能 没有它成功提交。具有名称的第一个输入元素 utf8 强制浏览器正确尊重表单的字符 编码并为所有形式生成,无论它们的动作是 “获取”或“发布”。名称为authenticity_token 的第二个输入元素 是 Rails 的一个安全特性,称为跨站请求伪造 保护,表单助手为每个非 GET 表单生成它 (前提是启用了此安全功能)。

    您可以在 Security Guide 中了解更多信息。

    【讨论】:

    • 好的。我无法删除 div 容器。我可以改变它吗?我的 .css 中没有 id 或我可以使用的东西。
    • 您不必担心,因为特定的 div 会包裹隐藏的元素。此外,div &lt;div style="margin:0;padding:0;display:inline"&gt; 被赋予了这种特殊的样式,这样其他表单元素就不会向下移动。这其实很好。由于隐藏元素,您不会获得额外的间距。
    • 哦等等。我将 form_for 样式与 .text_field 样式混淆了。输入错误:&lt;%= user_form_builder.password_field :password, :html =&gt; {:class =&gt; 'form-control input-xs', :placeholder =&gt; 'Passwort'}%&gt; | RIGHT-Input:&lt;%= user_form_builder.password_field :password, class =&gt; 'form-control input-xs', :placeholder =&gt; 'Passwort'%&gt; 所以它与 form_for 无关。对不起。
    • form_for 有 :enforce_utf8 和 :authenticity_token 选项,将两者都设置为 false 会给我一个 EMPTY div...不好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2015-02-23
    • 2011-07-29
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多