Rails ajax-запрос загрузки только в формате html - PullRequest
6 голосов
/ 17 января 2010

Я пытаюсь создать веб-страницу с поддержкой AJAX, используя rails и jQuery. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь загрузить представление в div с помощью метода jJuery AJAX, я получаю макет приложения, возвращенный вместе с представлением. Есть ли способ получить данные представления, только если это AJAX-запрос, но также загрузить макет моего приложения, если это не AJAX-запрос?

Вот метод контроллеров, который я вызываю:

def new
   @blog = Blog.new

   respond_to do |format|
       format.html # Goes to the new.html.erb view.
       format.xml { render :xml => @blog }
   end
end

Спасибо за помощь.

Ответы [ 2 ]

8 голосов
/ 17 января 2010

Вы должны добавить формат js в свой блок response_to:

format.js do
  render :update do |page|
    page.replace_html "id_of_your_div" :partial => "something"
  end
end

или

format.js do
  render :js => "$('#id_of_your_div').html('#{escape_javascript(render_to_string(:partial => 'something')}');"
end

Или даже вы можете поместить код javascript в файл с именем new.js.erb без использования блока format.js.

Рекомендую прочитать направляющие рельсов: http://guides.rubyonrails.org/layouts_and_rendering.html#using-render-with-update

7 голосов
/ 17 января 2010

Добавьте эту строку в ваш respond_to блок:

format.js { render :layout => false }

Это говорит о том, что для запросов javascript не визуализируйте макет. Теперь он должен работать как для запросов ajax, так и для обычных веб-ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...