Rails 3.2 javascript part не манипулирует html-страницей - PullRequest
0 голосов
/ 18 февраля 2019

На странице есть форма, ссылка на которую отправляет ajax-запрос моему контроллеру.Я хочу, чтобы контроллер обновил ресурс, а затем обновил ресурс на странице.Контроллер отвечает следующим образом:

def update
  @article = Article.find(params[:id])
  respond_to do |f| 
    f.js {}
  end 
end

, который затем использует следующий частичный: (article / update.js.erb)

<%= Rails.logger.info "in the partial"%>
<%= Rails.logger.info @article.title%>
$("#test").append("<h1> Header</h1>")
$("#json-app").append(" hello <%= @article.title %>");
$("#json-app").append("<p> hello</p>");
$("#comments").append("<%= @article.title %>:");
alert("something")
$("#btn").attr('disabled','disabled') 

Идентификаторы, на которые я ссылаюсь, присутствуютв представлении вызова в форме

form_for @article ,remote: true, html: {:'data-type' => 'json'}, id: "update_article_form" do |f|
.... 
<div id="comments"> comments </div>
<div id="json-app"> a response would be nice
   <div id="test"> comments</div>
</div> 
.....
<%= f.submit 'Update!', id: "btn", style: 'float: inline-end'%>

Но нажатие кнопки не имеет никакого эффекта.В HTML-инспекторе я вижу полезную нагрузку и ответ статуса 200.Журналы показывают:

Started PUT "/article/2223355" for 127.0.0.1 at 2019-02-18 18:04:29 +0100
Processing by v1::ArticleController#update as JSON
...
in the partial
big pott
Rendered v1/article/update.js.erb (2.9ms)
Completed 200 OK in 41.7ms (Views: 8.2ms | ActiveRecord: 2.4ms)

Но внутри представления вызовы jquery не имеют эффекта.

Полезная нагрузка ответа:

true
true
$("#test").append("<h1> Header</h1>")   
$("#json-app").append(" hello big pott");
$("#json-app").append("<p> hello</p>");
$("#comments").append("big pott ");
alert("something")
$("#btn").attr('disabled','disabled') 
$("input[type=submit]").attr('disabled','disabled') 
  • Запросзаголовок "accept" установлен на "text / javascript application / json"
  • заголовок ответа "content-type" установлен на "text / javascript"

я не понимаюпочему ничего не происходит на странице?Какую часть я пропускаю?Любые предложения приветствуются

1 Ответ

0 голосов
/ 18 февраля 2019

Измените эти

<%= Rails.logger.info "in the partial"%>

на

<%- Rails.logger.info "in the partial" %>

Так что это не делает эту "истинную" строку, я предполагаю, что это портит ваш синтаксис.И убедитесь, что строки правильно заканчиваются на «;».

Также вы можете добавить «отладчик»;строка перед кодом, чтобы браузер немедленно остановил выполнение, и вы можете отладить ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...