Как загрузить фрагмент HTML в рельсы с JQuery? - PullRequest
5 голосов
/ 18 февраля 2011

Мне интересно, как я могу jQuery.load фрагмент HTML, возвращенный действием show модели.Например, $("#container").load("/posts/34").Проблема в том, что он возвращает представление, которое я хочу встроить в макет, как если бы я посетил этот URL в браузере.Я только хочу Post show HTMl фрагмент.

Спасибо!

Уточнение : я хочу show представлениепродолжить рендеринг в макете приложения при переходе к действию show в моем браузере.Я просто пытаюсь понять, как извлечь only html представления show, когда я хочу загрузить его асинхронно с помощью jQuery.Я видел руководства, в которых они создают show.js.erb, а затем отображают представление html там, но мне это кажется довольно грязным, избегая всего этого html для javascript.Если это приемлемый и правильный способ сделать это, хотя, я думаю, я буду следовать стандарту.Мне было просто интересно, можно ли было получить только HTML-код определенного представления.

Ответы [ 3 ]

8 голосов
/ 18 февраля 2011

Вы можете использовать: layout => false в вашем операторе рендеринга, чтобы вернуть фрагмент без макета:

def show
  ...
  render(:layout => false) if request.xhr?
end
2 голосов
/ 18 февраля 2011

Если вы хотите поддерживать обычные и AJAX-запросы, вам нужно использовать блок respond_to.

Вроде так

respond_to do |format|
  format.html # renders index.html.erb automatically
  format.js { render 'show', :content_type=>'text/html', :layout=>false }
end
2 голосов
/ 18 февраля 2011

Вы можете передать параметр GET в URL и добавить условие в свой контроллер:

def show
  render(:layout => false) if params['partial'] == 'true'
end

И javascript:

$('#container').load('/posts/34?partial=true')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...