【问题标题】:Can I nest form tag inside form?我可以在表单内嵌套表单标签吗?
【发布时间】:2019-02-25 11:38:13
【问题描述】:

我有一种情况,由于 HTML 流,我必须在表单内嵌套表单标签,但无法完成。有没有其他选择?

                <tr class="first last">
                  <td class="a-right last" colspan="50"><button onclick="setLocation('#')" class="button btn-continue" title="Continue Shopping" type="button"><span>Continue Shopping</span></button>
                    <%= button_tag class: 'button btn-update', id: 'update-button' do %>
                      <%= Spree.t(:update) %>
                    <% end %>
                    <%= form_tag empty_cart_path, method: :put do %>
                      <%= submit_tag Spree.t(:empty_cart), class: 'button btn-empty' %>
                    <% end %>
                  </td>
                </tr>
                </tfoot>

          <%= form_for @order, url: update_cart_path, html: { id: 'update-cart' } do |order_form| %>

            <%= render partial: 'form', locals: { order_form: order_form } %>
          <% end %>
        <% end %>

button_tag 应该在 form_for 表单中,但如果我这样设置:

                <td class="a-right last" colspan="50"><button onclick="setLocation('#')" class="button btn-continue" title="Continue Shopping" type="button"><span>Continue Shopping</span></button>
                    <%= form_for @order, url: update_cart_path, html: { id: 'update-cart' } do |order_form| %>
                    <%= button_tag class: 'button btn-update', id: 'update-button' do %>
                      <%= Spree.t(:update) %>
                    <% end %>
                    <%= form_tag empty_cart_path, method: :put do %>
                      <%= submit_tag Spree.t(:empty_cart), class: 'button btn-empty' %>
                    <% end %>
                  </td>
                </tr>
                </tfoot>


            <%= render partial: 'form', locals: { order_form: order_form } %>
          <% end %>
        <% end %>

它不工作

【问题讨论】:

    标签: ruby-on-rails ruby forms


    【解决方案1】:

    我可以在表单中嵌套表单标签吗?

    您不能嵌套表单标签。

    这是错误的。它不会起作用,因为它是错误的。大多数浏览器只会看到一种表单。

    https://www.w3.org/TR/html5/forms.html#the-form-element

    内容模型: 流式内容,但没有表单元素后代

    【讨论】:

    • 感谢您的回复。您有什么提示可以从上面解决此类问题吗?
    • 不要使用嵌套形式,使用链接,模式等。
    【解决方案2】:

    如果我是正确的,您希望该 empty_cart 按钮与您的更新按钮对齐。在 Rails 中,您可以创建一个链接来进行更新或发布或您喜欢的任何内容。您可以执行以下操作:

    <%= link_to Spree.t(:empty_cart(_method: 'put')), empty_cart_path, class: 'button btn-empty', method: :post %>
    

    【讨论】:

    • 实际上,我想将 button_tag 保留在更新路径的确切位置(在 form_for @order 之外)。我试过 我得到 No route matches [PUT] " /购物车”
    • 在这种情况下,您可以简单地将“form_tag empty_cart_path”块移出“form_for @order”块,它现在嵌套在其中,这是不可能的。奇怪的 form_tag empty_cart_path,method: :put 也有方法 put 你在你的路由文件中缺少那个路由吗?
    • 啊这个路由问题我认为方法应该是 :post 而不是 :put 但是你需要设置一个名为 _method 的参数来放置。让我编辑我的答案。
    猜你喜欢
    • 2011-05-30
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多