2013-11-22 1 views
0

Я пытался выяснить, добавлять комментарии без перезагрузки страницы с помощью Ajax, прочитав несколько различных учебников это то, что я пришел к до сих пор, и это не работает:Нужно ли мне перезагрузить объект комментария или частичное, содержащее комментарий, в случае использования Ajax в Rails 3?

внутри user_comments/_comments.html.erb

<div id="comment_form"> 
    <%= simple_form_for [@commentable, @comment], :html => { :multipart => true }, :remote => true do |f| %> 
    <div class="picture"><%= image_tag current_user.avatar.url(:thumb) %></div> 
    <%= f.input :content, label: false, :placeholder => "Add Comment", :input_html => { :rows => 4 } %> 
    <%= f.submit "Add Comment" %> 
    <% end %> 
    </div> 

внутри контроллера:

def create 
@users = User.all 
@comment = @commentable.user_comments.new(params[:user_comment]) 
@comment.user_id = current_user[:id] 
#@commentable.user_comments.create(:user_id => current_user[:id]) 
if @comment.save 

    flash[:notice] = "Successfully created comment." 
    respond_to do |format| 
    format.html { redirect_to @commentable } 
    format.js 
    #format.js #{ render 'create.js.erb' } 
    end 
else 
    render :new 
end 
end 

и внутри create.js.erb

// Display a Javascript alert 
<% if remotipart_submitted? %> 
    $("#comments_list").append("<%= escape_javascript(render(:partial => 'user_comments/comments')) %>"); 
<% end %> 

Я использую Gem под названием: remotipart

Я не знаю, что я не хватает в этом процессе. в консоли я получаю:

POST http://localhost:3000/assignments/2/user_comments 

200 OK 
     134ms 

, что означает пост проходит, но комментарий не получает добавил обратно к частичной.

ответ

0

ОК после 2 дней! Я исправил это, вот что я могу поделить и могу помочь:

1- обязательно включите :remote => true в форму, которая должна быть отправлена ​​ 2- Проверьте контроллер и посмотрите, что перенаправляет действие «Создать» в моем случае я изменил к этому:

def create 
@users = User.all 
@comment = @commentable.user_comments.new(params[:user_comment]) 
@comment.user_id = current_user[:id] 
#@commentable.user_comments.create(:user_id => current_user[:id]) 
if @comment.save 
    flash[:notice] = "Successfully created comment." 
    respond_to do |format| 
    format.html 
    format.js {@comments = @commentable.user_comments} 


    end 
else 
    render :new 
end 
end 

Затем убедитесь, что create.js.erb написано правильно:

$("#comments_list").empty() 
$("#comments_list").append("<%= escape_javascript(render(:partial => 'comments')) %>"); 

там вы идете! Надеюсь, что некоторые создадут правильный учебник для новичков вроде меня :)!

Смежные вопросы