Задать вопрос
@kramidev

Ajax in rails. How to do view more?

Привет всем. Как сделать получить еще в rails с помощью ajax?

имеется ссылка
<%= link_to main_index_path(:countNews => @news.count + 9), remote: true do %>
               Больше новостей
            <% end %>


Насколько я понимаю remote обьявляет ajax. А дальше не пойму запрос идет в контроллер или его надо обработать?
  • Вопрос задан
  • 2334 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
viktorvsk
@viktorvsk
Запрос идет в контроллер. Его нужно обработать.
Что бы правильно работали все эти remote: true должна быть подключена библиотека, например, с джиквери -
//=require jquery
//=require jquery_ujs
Тогда появится магическое поведение всех этих аттрибутов.

После чего, запрос попадает в тот же контроллер, что обычно, но с форматом js

В простейшем случае, Вам нужно просто добавить вью, в вашем случае:
views/main/index.js.erb

И в нем написать javascript код, который будет реализовывать "показать больше". Например, вставить (append) полученные переменные (новые новости из контроллера).

Если логика для html и js форматов будет отличаться, тогда в экшене пишете
# news_controllerb.rb
def index
#common format code
@news = News.all
respond_to do |format|
format.html{ #html specific code }
format.js{ #js specific code }
end
end


Но вот ваше
(:countNews => @news.count + 9)

смущает. Нужно будет реализовывать какой-то механизм, что бы дальше отдавались не те же самые новости, а постоянно - следующие.

UPD:
Проверять запросы нужно с помощью гемов pry или byebug. Ставите точку останова в нужно месте в контроллере (где ждете запрос) и смотрите, что там где находится.

Вместо алертов используйте console.log()

Что происходит с запросом, смотрите в браузере во вкладке Network
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 17:50
7000 руб./за проект
18 дек. 2024, в 17:26
5000 руб./за проект
18 дек. 2024, в 17:23
1500 руб./за проект