Как я могу вставить идентификатор текущего пользователя в раздел URL в AJAX? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь заменить '2' в поле url в функции getEvents и сделать его динамическим там, где он будет захватывать идентификатор текущего пользователя.

Я хотел сделать что-то вроде ${current_user.id}.Как мне это сделать?как в идеале это то, что я хочу сделать:

function getEvents() {
  $.ajax({
    url: 'http://localhost:3000/users/`${current_user.id}`/events',
    method: 'get',
    dataType: 'json'
  }).done(function(data) 

У меня есть метод current_user в моем файле ApplicationController.Я пытался применить JSON, но я получил ошибки.Ниже приведен весь код.

 class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  helper_method :current_user, :logged_in?, :log_user_in #let these methods be used in views

  private
  def log_user_in
    session[:user_id] = @user.id
  end

  def logged_in?
    !!current_user
  end

  def current_user #should return previous user or look for current user
    @current_user ||= User.find_by(id: session[:user_id]) if session[:user_id]
  end
end

$(function() {
  console.log('event.js is loaded...')
  listenForClick()
});

function listenForClick() {
  $('button#events-data').on('click', function(event) {
    event.preventDefault()
    getEvents()
  })

  function getEvents() {
  $.ajax({
    url: 'http://localhost:3000/users/2/events',
    method: 'get',
    dataType: 'json'
  }).done(function(data) {

    console.log("the data is: ", data)
    debugger
    let myEvent = new Event(data[0])
    let myEventHtml = myEvent.eventHTML()
    document.getElementById('ajax-events').innerHTML += myEventHTML
  })
}


class Event {
  constructor(obj) {
    this.id = obj.id
    this.name = obj.name
    this.host = obj.host
    this.description = obj.description
    // this.host.user.id = obj.user.id
  }
}


Event.prototype.newEventForm = function() {
   (`
  <strong>New Event</strong>
  <form>
    <input id='event-name' type='text' name='name'></input><br>
    <input type='text' name='description'></input><br>
    <input type='submit'/>
    </form>
  `)
};

Ответы [ 3 ]

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

Согласно описанию, упомянутому в посте, вы можете сделать следующее:

1) Прямой доступ к переменной в теге скрипта

var user_id = <% current_user.id %>

2) Присоединить идентификатор, переданный из контроллерак элементу в теле html.

Затем извлеките значение идентификатора из элемента, для которого оно было установлено.

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

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

Я понял это.Мне просто нужно было написать: ${this.href} в разделе URL.

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

Добавить в поле зрения URL передачи из рельсов: добавить что-то вроде (изменить путь к правильному):

javascript_tag("window.UPDATE_URL = #{update_user_path(current_user)};")

и в JS

  $.ajax({
    url: window.UPDATE_URL,
...