@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 просмотра
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
02 нояб. 2024, в 21:08
2000000 руб./за проект
02 нояб. 2024, в 20:34
40000 руб./за проект
02 нояб. 2024, в 20:05
800 руб./в час