rails 4, вложенный ресурс не обновляется без обновления страницы с использованием Ajax

Итак, у меня есть модель Events, в которой есть_many Questions. Связь такая же, как в Post-> Comment. Я попытался реализовать Ajax для вопросов, но мне кажется, что мне чего-то не хватает, потому что View не обновляется без обновления страницы. Та же проблема с методом удаления.

Вот мой question_controller.rb:

def create
 @question = @event.questions.create(question_params)
 @question.user_id = current_user.id if current_user
 if @question.save
  respond_to do |format|
    format.html { redirect_to event_path(@event) }
    format.js # render questions/create.js.erb
  end
 else
  render 'events/show'
 end
end

Вопрос _form.haml:

= simple_form_for [@event, @event.questions.new], remote: true do |f|
 = f.input :content, label: 'Your question:', id: 'question_content'
 = f.submit class: 'submit_btn'

Вопрос частичный _question.haml:

%h4
    = question.content

Вот как это выглядит в Events show.haml:

%section#question_section
 %h1 Questions:
  #questions
   = render @event.questions

#question-form
 %h1 Submit a question:
 = render 'questions/form'

И файл create.js.erb:

$('#questions').append("<%= j render partial: @question %>");
$('#question_content').val('');

Я пробовал несколько разных руководств, но всегда сталкивался с одной и той же проблемой. Просматривайте обновления только после обновления. Также это мой второй пост на Stackoverflow, поэтому буду благодарен за любые предложения, если с ним что-то не так.

ИЗМЕНИТЬ 1: в основном я следовал этому руководству: https://pragmaticstudio.com/blog/2015/3/18/rails-jquery-ajax

ИЗМЕНИТЬ 2: похоже, create.js.erb не отвечает, пытался проверить его с помощью предупреждений или журнала консоли, но безуспешно. После нажатия кнопки на консоли, имеющей: «Обработка с помощью QuestionsController # создать как JS» (так что он запускает правильный файл, но сам файл не выполняет никакого кода). Понятия не имею, почему это происходит.


person Arsen    schedule 06.05.2016    source источник
comment
вы можете подтвердить, что create.js.erb действительно запускается? и что у вашего вопроса есть содержание. (т.е. это не просто добавление пустых тегов h4, которые будут выглядеть так, как будто он вообще не добавляется)   -  person PhilVarg    schedule 07.05.2016
comment
похоже, нет, я попытался добавить в console.log какой-то текст, и он не появляется после нажатия кнопки создания. тоже надоело: format.js {render action: create} в контроллере   -  person Arsen    schedule 07.05.2016
comment
есть ли ошибки в консоли вашего сервера? что в ответе сервера говорится, что он отрисован?   -  person PhilVarg    schedule 07.05.2016
comment
он говорит: Обработка с помощью QuestionsController # создает как JS, а затем некоторые транзакции (вставлять, выбирать, обновлять) без ошибок.   -  person Arsen    schedule 07.05.2016
comment
о и: вопросы / _question.haml (0,4 мс) вопросы / create.js.erb в макетах / приложении   -  person Arsen    schedule 07.05.2016
comment
Попробуйте проверить, является ли элемент h1 с идентификатором questions уникальным в вашем show.haml шаблоне представления. У меня была такая же проблема, и причина в том, что было несколько элементов с одним и тем же идентификатором. Должен быть только один элемент с определенным идентификатором, и если их несколько, JS запутается.   -  person Taiga    schedule 07.05.2016
comment
спасибо за предложение, но, к сожалению, это не так, идентификатор уникален. create.js.erb просто не выполняет никакого кода, и я все еще пытаюсь понять, почему.   -  person Arsen    schedule 07.05.2016


Ответы (1)


Итак, проблема была в HAML. Пришлось изменить мою строку format.js в контроллере на:

formta.js { render layout: false }

Вот поток, который помог решить эту проблему: Rails update.js.erb не выполняет javascript

person Arsen    schedule 07.05.2016