AJAX не работает в обновлении на той же странице Rails - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь создать приложение для вопросов и ответов с Ajax на Index.html.erb. Мне удается получить форму для удаленной загрузки, но при сохранении записей AJAX не работает и пользователь попадает в обычный show.html.erb. Кроме того, что Ajax не запускается, все работает хорошо.

Мой код, как показано ниже:

index.html.erb (содержит частичное для ввода и частичное для результатов)

<div>
  <h3 class="section_title">  Q&A </h3>
  <hr>
  <div id="qanda-form" style="display:none;"> </div>
</div>
<div id="qandas">
  <%= render 'qandas/qanda' %>
</div>

_qanda.html.erb (является частичным для результатов)

<% @qandas.each do |my_qanda| %>
  <div class="col-md-9">
    <div>
      Created  <%= local_time(my_qanda.created_at) %>, by  <%= User.find_by(id: my_qanda.user_id).full_name %>
    </div>
  </div>
<% end %>

_form.html.erb (является формой ввода - имеет вложенную форму через Cocoon)

<%= simple_form_for @qanda, remote: true do |f| %>
  <%= f.error_notification %>
  <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
  <div class="col-md-12 form-inputs">
    <div class="col-md-8">
      <%= f.input :title, label: 'Q&A Title:' %>
    </div>
  </div>
  <div class="qandasquestions">
    <%= f.simple_fields_for :qandasquestions do |builder| %>
      <% render 'qandas/qandasquestion_fields', f: builder %>
    <% end %>
    <div class="links btn-group" style="min-height: 34px !important">
      <%= f.button :submit, "Publish Q&A", class: "btn btn-default" %>
      <%= link_to_add_association 'Add Question', f, :qandasquestions, class: 'btn btn-default', data: {association_insertion_node: '.qandasquestions', association_insertion_method: :append} %>
      <%= link_to 'Back', qandas_path, class: "btn btn-default" %>
      <%= f.input :company, :as => :hidden, :input_html => {:value => current_user.company} %>
    </div>
  </div>
<% end %>

Контроллер

def index
  @qandas = Qanda.all
  respond_to do |format|
    @qandas = Qanda.all
    format.html
    format.json
  end
end

def create
  @qanda = current_user.qandas.build(qanda_params)
  respond_to do |format|
    if @qanda.save!
      @qandas = Qanda.all
      format.html { redirect_to @qanda, notice: 'Qanda was successfully created.' }
      format.json {render :layout => false}
    else
      format.html { render :new }
      format.json { render json: @qanda.errors, status: :unprocessable_entity }
    end
  end
end

create.js.erb

$('#qandas').html("<%= j render partial: 'qandas/qanda' %>");
$('#qanda-form').slideUp(350);

new.js.erb

$('#qanda-form').html("<%= j render 'qandas/form' %>");
$('#qanda-form').slideDown(350);

Кто-нибудь может понять, почему Ajax не запускается, пожалуйста? почему меня перенаправляют на страницу традиционного ШОУ, пожалуйста?

1 Ответ

0 голосов
/ 11 ноября 2018

Попробуйте обновить свой код до этого и дайте мне знать, если он работает?

def create
  @qanda = current_user.qandas.build(qanda_params)
  if @qanda.save!
    @qandas = Qanda.all
  else
    @errors = @qanda.errors 
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...