2016-03-18 16 views
0

私はコミュニケーションのための2つのモデル、投稿と返信を持っています。なんらかの理由で私は理解できません。@replyフォームは応答しません。送信は機能せず、ファイルアップロードフィールドは機能しませんが、@replyフォームでのみ、@prosectと@postフォームは完全に機能します。Rails 4 2つのフォーム、1つのページに別々のモデル

<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> 
+0

@replyはどのように失敗しますか?あなたのログには何も言いませんか? JSコードが失敗して送信できなくなっているかどうか確認しましたか? –

+0

JSが失敗し、コンソールに何も表示されない場合は、aタグのデフォルトを防止しますが、フォームには影響しません。 – jmshofstall

+0

フォームは送信されないため、何もサーバーログには入りません。 – jmshofstall

答えて

0

JSは、.reply div内のすべてのクリックのデフォルトを防止していました。返信フォームのラッパーで返信が使用されていたため、デフォルトが防止されていました。返信リンクのクラスを 'addreply'に変更し、jsリスナーを 'addreply'に変更することで、現在作業しています。

関連する問題