Rails - отображать результаты индекса и показывать действия через ajax - PullRequest
8 голосов
/ 18 мая 2011

У меня очень простой ресурс Post с двумя действиями, index и show .Мой шаблон содержит боковую панель со ссылками на каждый предыдущий пост.Я хочу, чтобы ссылки на боковой панели отображали их содержимое (например, результаты действия "show" ) через ajax

Я знаю, что существует множество превосходных tuts , показывающий, как создать форму, которая отправляется с помощью ajax, но на этот раз я хочу использовать ее для отображения содержимого моего индекса и отображения действий без ссылки на страницу

.Существуют ли какие-нибудь приличные учебники, которые дают советы о том, как это сделать?

Я считаю, что мне нужно создать файл show.js.erb и сообщить моему действию index, чтобы оно отвечало нано я немного застрял, продолжая.Я не совсем знаю, что добавить в действие show контроллера или show.js.erb - немного сложно представить, что мне нужно сделать

PS - с помощью rails 3.0.7, jquery-1.5

Ответы [ 2 ]

10 голосов
/ 18 мая 2011

Все получилось, в итоге все было очень просто.

Шаг 1 - добавить :remote => true к ссылкам на боковой панели

#application.html.haml
%nav#sidebar
  - for post in @posts
    = link_to post.title, post_path, :remote => true
%div#main
    = yield

Шаг 2 - скажите вашему контроллеру, чтобы он ответил JS на действие show

def show
  @post = Post.find(params[:id])
  @posts=Post.all # needed for sidebar, probably better to use a cell for this
  respond_to do |format|
    format.html # show.html.erb
    format.js # show.js.erb
  end
end

Шаг 3 - Создать _post.html.haml

# _post.html.haml
%article.post
  = sanitize post.body

Шаг 4 - Создайте show.js.erb и замените html в div #main содержимым партиала _post (который мы создали на шаге 3)

# show.js.erb
$("#main").html("<%= escape_javascript(render @post) %>");

Теперь весь контент передается через ajax, и он работает нормально.

1 голос
/ 18 мая 2011

У меня нет полного ответа, потому что я тоже относительно новичок в этом.

Но я бы начал с рассмотрения метода get() в JQuery.Вы должны быть в состоянии использовать это для вызова метода index или show.Эти методы должны возвращать HTML, который вы хотите отобразить в разделе без боковой панели страницы.Вы можете использовать обработчик обратного вызова get(), чтобы поместить этот HTML в соответствующий div на странице.

Извините, что это немного расплывчато, но если вы поиграете с этим, держу пари, вы поймете это.

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