2015-07-30 3 views
0

Это создает новый комментарий запись, но она не будет перезагружать частичное :(
Это просто показывает белый пустую страницу сразу после того, я нажал на кнопку отправки.
Почему? И как я могу это исправить?Как загрузить частичный вид с помощью ajax динамически?

Просмотры /movies/show.html.erb

<div id="partial"> 
    <%= render 'movies/comment' %> 
</div> 

<form action="/comments" method="post" data-remote="true" > 
    <input type="text" name="body" id="input" /> 
    <button type="submit" >Submit</button> 
    <input type="hidden" name="video_id" value="<%= params[:uid] %>"> 
</form> 

/config/routes.rb

resources :comments 
get "movies/:uid/refresh" => 'movies#refresh' 

контроллеры/comments_controller.rb

def create 
    if @user = User.find_by_twitter_id(session[:id]) 
    else 
     @user = User.new 
     @user.twitter_id = session[:id] 
     @user.save 
    end 

    if @movie = Movie.find_by_uid(params[:video_id]) 
    else 
     @movie = Movie.new 
     @movie.uid = params[:video_id] 
     @movie.save 
    end 

    @comment = Comment.build_from(@movie, @user.id, params[:body]) 
    @comment.save 

    flash[:notice] = "Posted!" 

    respond_to do |format| 
     format.js do 
      render 'movies/' + @movie.uid + '/refresh' 
     end 
    end  
end 

Контроллеры/movies_controller.rb

def refresh 
    @movie = Movie.find_by_uid(params[:uid]) 
    @comments = @movie.comment_threads.order("created_at DESC") 

    respond_to do |format| 
     format.js 
    end 
end 

def show 
    if @movie = Movie.find_by_uid(params[:uid]) 
     @comments = @movie.comment_threads.order("created_at DESC") 
    end 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @movie } 
    end 
end 

просмотров/фильмы/refresh.js.erb

$('#partial').html("<%= j(render(:partial => 'movies/comment')) %>"); 
$('#input').val(''); 

вид с/кино/_comment.html.erb

<% if @comments %> 
    <% @comments.each do |comment| %> 
     <%= comment.id %>:<%= comment.body %><br /> 
    <% end %> 
<% end %> 
+0

Что делает? Напишите описание высокого уровня того, что вы пытаетесь выполнить. – max

ответ

0

В вашем контроллеры/comments_controller.rb

def create 
    /*other stuff*/ 

    @comment = Comment.build_from(@movie, @user.id, params[:body]) 
    @comment.save 
    @comments = @movie.comment_threads.order("created_at DESC") 

    flash[:notice] = "Posted!" 

    respond_to do |format| 
     format.js do 
      render :refresh 
     end 
    end  
end 
Смежные вопросы