Arhn - архитектура программирования

Как сделать асинхронный запрос GET на RAILS и получить только форму просмотра (а не все тело и заголовки)

Я создал простую асинхронную функцию jquery в своем приложении rails, чтобы я мог распечатать ответ на «отображаемом» div. Но когда я делаю запрос GET к моему URL-адресу rails, он отвечает на весь html: «body», «head» и «includes», как если бы это была новая страница в браузере, поэтому результирующий источник выглядит следующим образом:

Прежде чем я нажму кнопку:

<html>
  <head>
    <title>Myapp1</title>
  </head>
  <body>
      <button onclick="callPage()">Call</button>
      <div id="display"></div>
  </body>
<html>

После того, как я нажму кнопку, и div "display" будет заполнен моим ответом:

<html>
      <head>
        <title>Myapp1</title>

      </head>
      <body>
          <button onclick="callPage()">Call</button>
          <div id="display">
             *<html>
               <head>
                 <title>Myapp1</title>
               </head>
               <body>
                 -----Content of page user/1 which is the only thing I want to get.------
               </body>
             <html>*
          </div>
      </body>

My route to users on routes.rb (RUBY ON RAILS) working fine

  resources :users
  #get 'welcome/index'
  match ':controller(/:action(/:id))', :via => :get

Мой Jquery GET callPage (работает нормально)

<script>
         function callPage()
    {   
        url="user/1";
        div="display";
        $.ajax({
            type: "GET",
            dataType: "text",
            url: url,
            success: function(msg){
                if(parseInt(msg)!=0)
                {
                    $("#"+div).html(msg);
                }
            }   
        }).setRequestHeader('X-CSRF-Token', AUTH_TOKEN);
    }
        </script> 

Вопрос в том, как мне запретить RAILS распечатывать каждый HTML-тег повсюду (тело, головы,...) и заставить его печатать только то представление контроллера, которое я хочу (в данном случае, пользователи). ¿Это конфигурация где-то или я волнуюсь, чтобы как-то обрезать это?

Спасибо миллион заранее за ваше время.


  • разве вы не хотите здесь JSON, а не html? 11.02.2016
  • Чтобы отображать только представление, вы должны изменить действие контроллера, чтобы в конце было render layout: false. Это предотвратит рендеринг макета, оставив только содержимое в вашем файле представления. 11.02.2016
  • Привет, что я хочу сделать, это вывести форму на div асинхронно, я не понял, при чем здесь JSON. Спасибо 11.02.2016
  • @nbermudezs хорошо, что это было быстро!! Спасибо мужик, разобрался. 11.02.2016
  • нет проблем, я добавил это как ответ и показал код контроллера на всякий случай :). Не стесняйтесь пометить его как принятое. 11.02.2016
  • @nbermudezs на самом деле не уверен, как пометить его как принятый, это мой первый вопрос 11.02.2016
  • @FedericoRvg Проверьте meta.stackexchange.com/a/5235, вам нужно навести указатель мыши на ответ "за" или "против", чтобы увидеть принять значок, а затем просто нажмите на него. Добро пожаловать в StackOverflow! 11.02.2016

Ответы:


1

Чтобы отобразить только представление, вы должны изменить действие контроллера, чтобы в конце было значение render layout: false. Это предотвратит рендеринг макета, оставив только содержимое в вашем файле представления.

Например:

class YourController < ApplicationController
  def show
    # bla bla
    render 'your_show_view_name', layout: false
  end
end

Если вы хотите, чтобы все ваши действия контроллера имели такое поведение, вы можете поместить его прямо вверху.

class YourController < ApplicationController
  layout false
  def show
    # bla bla
  end
end
11.02.2016
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..