2013-07-13 2 views
0

У меня есть модальная форма:Bootstrap форма модальной совершает дважды

<div id="commentModal" class="modal hide fade"> 
    <div class="modal-body"> 
    <%= form_for(Comment.new, remote: true, html: {"data-type" => :json}, :validate => true) do |f| %> 
     <%= f.hidden_field(:illustration_id, :value => @illustration.id) %> 
     <%= f.hidden_field(:user_id, :value => current_user.id) %> 
     <%= f.text_area(:comment, :id => "comment_message") %> 
     <%= f.submit "Submit", :class => 'btn btn-custom-primary' %> 
    <% end %> 

    </div> 
</div> 

Когда я отправить комментарий будет добавлен к БД дважды, вот лог. Вы видите, почему это происходит? Могу ли я предоставить любой другой код, который поможет?

Started POST "/comments" for 127.0.0.1 at 2013-07-13 10:58:32 -0400 
Processing by CommentsController#create as JSON 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"asdfasdfasdfasdfasasdfasdfasdfasdfasdf", "comment"=>{"illustration_id"=>"1", "user_id"=>"1", "comment"=>"Test comment"}, "commit"=>"Submit"} 
    (36.8ms) BEGIN 
    SQL (78.6ms) INSERT INTO "comments" ("comment", "created_at", "illustration_id", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["comment", "Test comment"], ["created_at", Sat, 13 Jul 2013 14:58:32 UTC +00:00], ["illustration_id", 1], ["updated_at", Sat, 13 Jul 2013 14:58:32 UTC +00:00], ["user_id", 1]] 
    (38.7ms) COMMIT 
Completed 201 Created in 163ms (Views: 1.4ms | ActiveRecord: 154.1ms) 


Started POST "/comments" for 127.0.0.1 at 2013-07-13 10:58:32 -0400 
Processing by CommentsController#create as JSON 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"asdfasdfasdfasdfasasdfasdfasdfasdfasdf", "comment"=>{"illustration_id"=>"1", "user_id"=>"1", "comment"=>"Test comment"}, "commit"=>"Submit"} 
    (36.5ms) BEGIN 
    SQL (36.9ms) INSERT INTO "comments" ("comment", "created_at", "illustration_id", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["comment", "Test comment"], ["created_at", Sat, 13 Jul 2013 14:58:32 UTC +00:00], ["illustration_id", 1], ["updated_at", Sat, 13 Jul 2013 14:58:32 UTC +00:00], ["user_id", 1]] 
    (38.3ms) COMMIT 
Completed 201 Created in 116ms (Views: 0.9ms | ActiveRecord: 111.7ms) 

В соответствии с просьбой, комментарий контроллер создать метод:

def create 
    @comment = Comment.new(params[:comment]) 

    respond_to do |format| 
     if @comment.save 
     format.html { redirect_to @comment, notice: 'Comment was successfully created.' } 
     format.json { render json: @comment, status: :created, location: @comment } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @comment.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

И новый метод:

def new 
    @comment = Comment.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @comment } 
    end 
    end 
+0

Можете ли вы разместить свой код контроллера? –

+0

@ErminDedovic, добавлено. –

+0

Есть ли у вас какие-либо действия (фильтры), которые происходят до или после отправки? –

ответ

0

Я думаю, ваша проблема маловероятен: верно для вызова представления Ajax. Удалить удаленные: истинный вариант из тега формы и попробовать нормальную форму submit..surely работает

иначе Если и нужно Аякс представить, пожалуйста, обратитесь этим Jquery Rails 3... form submits twice... deletes twice... help

0

Я побежал в этот вопрос, и это закончилось тем, что было довольно подлым. Я делал форму внутри модального, и он отправлял дважды. В итоге оказалось, что когда я показывал этот контент, я делал это с макетом и, таким образом, включал все JS и т. Д. Снова - фактически двойное связывание формы. Что действительно удивительно, так это то, что форма была прекрасной - не очевидно, показывая остальную часть моего приложения внутри модального.

Я исправил его, показывая модальность без макета, т.е. в моем контроллере:

render layout: false 
Смежные вопросы