Rails如何在form_for中呈现集合?

时间:2017-03-07 18:21:24

标签: ruby-on-rails

我想在form_for中呈现一组字符(这样我就可以在每个check_box_tag内使用character_item一次发送多个字符。我正在使用以下代码,但它有问题。只有第一个字符在表单内呈现,其余字符出现在表单之外。我做错了什么?

<%= form_for(:message, url: :messages, method: :post, html: { id: "message_form" }
            ) do |f| %>

  <% if characters.any? %>
    <% characters.each do |character| %>
      <%= render "characters/character", character: character, f: f %>
    <% end %>
  <% end %>

<% end %>

这会产生以下html:

<form id="message_form" enctype="multipart/form-data" action="/messages" accept-charset="UTF-8" method="post">
  <div class="character_item" id="character_alfred">
</form>
<div class="character_item" id="character_barney">
<div class="character_item" id="character_chas">
<div class="character_item" id="character_dean">

编辑

我已将问题缩小到这段代码。当我删除它时,布局很好:

<%= button_to destroy_relationship_path(
            params: {
              following_callsign: @character.callsign,
              followed_callsign: followedcallsign,
              viewed_callsign:  viewedcallsign
            }
          ),
          class: 'btn btn-default btn-xs post_button',
          id: 'unfollow-eye',
          remote: true,
          method: :delete do %>
  <span class="glyphicon glyphicon-sunglasses" aria-hidden="true"></span>
<% end %>

有人能看出它有什么问题吗?我怀疑按钮代码没有任何问题,我认为这与在窗体中有一个按钮有关。我不知道。像往常一样,我感到困惑。

1 个答案:

答案 0 :(得分:0)

原来你不能在表单中放一个按钮,因为它会关闭表单。看到这个答案:

https://stackoverflow.com/a/34644553/346613

解决方案是将所有button_to转换为link_to