2014-12-11 5 views
0

Я пытаюсь добавить новые комментарии к списку существующих комментариев, используя javascript и ajax. Я создал свои комментарии # create, чтобы создать новый комментарий, а затем вынести его текст. Но как я могу получить доступ к этому тексту с помощью ajax?Rails: Могу ли я отправить запрос GET на путь создания?

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

def new 
    @comment = Comment.new 
    @comments = Comment.all 
end 

def create 
    @thing = Thing.find(params[:thing_id]) 
    @comment = @thing.comments.create(comment_params) 
    render text: @comment.text.to_s + "".html_safe 
end 

Моя форма для нового комментария и AJAX/JavaScript попытка:

<%= form_for([@thing, @comment], remote: true) do |f| %> 
    <%= f.text_area :text, :placeholder => "Explain your rating..." %> 
    <div id="btn"><%= f.submit "Post", class: "btn", id: "postacomment" %></div> 
    <script type="text/javascript"> 
     $("#postacomment").click(function() { 
     $.get("<%= new_thing_comment_path(:id => @comment.id) %>", function(data) { 
      $('#comments_h2').prepend(data); 
     }); 
     }); 
    </script> 
    <% end %> 

ответ

1

Прежде всего, не пытайтесь согнуть HTTP методы для удовлетворения ваших потребностей, следуйте им вместо этого.

Если вы хотите ответить на javascript с помощью рельсов, это довольно просто. На вашем комментарии контроллера:

def new 
    @comment = Comment.new 
    @comments = Comment.all 
    end 

    def create 
    @thing = Thing.find(params[:thing_id]) 
    @comment = @thing.comments.create(comment_params) 
    respond_to do |format| 
    format.html { redirect_to new_comments_path } #this is just a redirection in case JS is disabled 
    format.js 
    end 
    end 

Как вы можете видеть, что мы теперь в ответ на два типа форматов, в этом случае html и js, это заставляет вас есть те, соответствующие взгляды, или, по крайней мере, для версии js которая может выглядеть следующим образом:

приложение/просмотров/комментариев/create.js.erb:

$('#comments_h2').prepend("<%= j @comment %>"); 

В приведенном выше примере я предполагаю, что у вас есть частичный для г endering комментарий, он должен выглядеть примерно так:

приложение/просмотров/комментариев/_comment.html.erb:

<h2><%= comment.content %></h2> 

Очевидно, что вы должны обновить файл, чтобы удовлетворить ваши потребности.

Надеюсь, это поможет!

+0

Это, наконец, работает, спасибо! –

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