Rails 4 两种形式,一页上有单独的模型



我有两种沟通模式,Post和Reply。由于某种原因,我无法弄清楚,@reply表单没有响应。提交不起作用,文件上传字段不起作用,但仅在@reply表单上,@prosect和@post表单才能完美运行。

<h1><strong><%= @group.name %></strong></h1>
<p><em><%= @group.description %></em><p>
<p>Operated by: <% @owner = User.find(@group.owner_id) %><%= @owner.name %></p>
<% if current_user.group_id == nil %>
  <%= form_for(@prospect) do |f| %>
    <%= f.hidden_field :group_id, value: @group.id %>
    <%= f.submit "Join Group", class: "btn btn-primary" %>
  <% end %>
<% end %>
<% if current_user.group_id == @group.id %>
  <%= form_for(@post) do |f| %>
    <%= f.hidden_field :group_id, value: @group.id %>
    <%= f.hidden_field :user_id, value: current_user.id %>
    <div class="form-group col-xs-12">
      <div class="row">
        <div class="col-xs-11">
          <%= f.text_area :content, class: 'form-control', placeholder: "What ails you?" %>
        </div>
        <div class="col-xs-1">
          <button type="button" class="btn btn-success" onclick="addpic(0);">Add a pic</button>
        </div>
      </div>
    </div>
    <div class="form-group hidden col-xs-12" id="picture0">
      <%= f.file_field :image, class: 'form-control' %>
    </div>
    <div class="form-group col-xs-12 actions">
      <%= f.submit %>
    </div>
  <% end %>
  <% @group.posts.each do |p| %>
    <div class="post">
      <div class="post-meta">
        <%= p.user.name %> <em><%= p.created_at.strftime('%a, %b %e, %Y %r') %></em>
      </div>
      <%= p.content %>
      <% if p.image %>
        <img src="data:image/png;base64,<%= p.image %>" class="img-responsive"/>
      <% end %>
      <% p.replies.each do |r| %>
        <%= r.user.name %><br/><%= r.content %>
        <% if r.image %>
          <img src="data:image/png;base64,<%= r.image %>" class="img-responsive"/>
        <% end %>
      <% end %>
      <a class="reply">Reply</a>
      <div class="reply hidden">
        <%= form_for(@reply) do |ff| %>
          <%= ff.hidden_field :post_id, value: p.id %>
          <%= ff.hidden_field :user_id, value: current_user.id %>
          <div class="form-group col-xs-12">
            <div class="row">
              <div class="col-xs-11">
                <%= ff.text_area :content, class: 'form-control', placeholder: "Write a reply..." %>
              </div>
              <div class="col-xs-1">
                <button type="button" class="btn btn-success" onclick="addpic(<%= p.id %>);">Add a pic</button>
              </div>
            </div>
          </div>
          <div class="form-group hidden col-xs-12" id="picture<%= p.id %>">
            <%= ff.file_field :image, class: 'form-control' %>
          </div>
          <div class="form-group col-xs-12 actions">
            <%= ff.submit %>
          </div>
        <% end %>
      </div>
    </div>
  <% end %>
<% end %>
<script>
  var addpic = function(id) {
    var el = '#picture' + id;
    $(el).removeClass('hidden');
  }
  $('.reply').on('click', function(e){
    e.preventDefault();
    $(this).next().removeClass('hidden');
  });
</script>

找出问题后,JS阻止了.replydiv内所有点击的默认值。在回复表单的包装器中使用了回复,因此它阻止了默认值。现在通过将回复链接的类更改为"addreply"并将 js 侦听器更改为"addreply"来使其工作。

最新更新