Что я должен поместить в раздел URL моего запроса jjery ajax? URL продолжает возвращаться неопределенным - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь отобразить новый объект Event и получить данные на той же странице через JavaScript. Мне нужны результаты, чтобы показать в / users / 1 / events / new, где я и получил свою форму. Я использую Ajax Jquery запрос. Но URL продолжает возвращаться неопределенным.

Вот что я пытался поместить в этот раздел URL:

1) ${this.href}.json 2)'this.action' 3) / users / $ {e.target.data} / events` => Этот динамический код должен возвращать целое число.

Я получаю ошибки, такие как незаконный вызов и 422 (Unprocessable Entity). На что я погуглил, но все еще запутался. Надеюсь, я хорошо структурирую свой вопрос. Если нет, пожалуйста, дайте мне знать.

вот моя форма:

<div class="form" id="form-wrap-event" data=<%=current_user.id%>>

      <%= render 'form' %>

</div>

Мой current_user.id возвращает идентификатор текущего пользователя.

Вот мои events.js

function getNewEvent() {
  $("#form-wrap-event").on("submit", (e) =>  {
    e.preventDefault()
    console.log("new event")
    $.ajax({
         method: "POST",
         url: (I DON'T KNOW WHAT TO PUT HERE)
        }).done(function(response){
          console.log('the data is: ', response)
    // console.log($(this).serialize())
    // const values = $(this).serialize()
    // $.post('/events', values)
    // .done(function)(data) {
    //
    // }
         })
   })
 }

Вот мой контроллер событий:

def create
      @event = Event.create(event_params)
      @event.host = current_user.host
      @users = User.all

      if !params[:event][:guest].blank?
          params[:event][:guest].each do |id|
            #finds guests and adds them to event's guest list
            @event.guests << Guest.find_or_create_by(user_id: id)
            @event.save
            @user.host.events << @event
          end
          respond_to do |format|
            format.html { redirect_to user_events_path }
            format.json { render json: @event }
          end
           # render json: @event
          # redirect_to user_events_path, flash: {success: "#{@event.name} is created!"}
      else
        render :new, flash: {danger: "Please enter all fields."}
      end
    end

1 Ответ

0 голосов
/ 08 апреля 2019

, поэтому я разочаровался в синтаксисе jjery ajax и вместо этого сделал метод post.

function getNewEvent(){
  $('form').submit(function(event) {
    //prevent form from submitting the default way
    event.preventDefault();
    let values = $(this).serialize();
      $.post(`${this.action}`, values).done(function(data) {
        console.log(data)
        $('#app-container').html('')
        const newEvent = new Event(data)
        const htmlToAdd = newEvent.renderHTML()

        $("#app-container").html(htmlToAdd)
    });
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...