У меня есть список элементов и выше. У меня есть несколько ссылок, которые позволяют вам фильтровать список, но после того, как вы нажмете эти ссылки один раз, WebBrick возвращает 304 Not Modified. Элементы в списке могут быть изменены в списке, и поэтому эти ссылки фильтра отображают устаревшую информацию. На мой взгляд выглядит следующим образом:Rails кэширование remote link_to
приложение/просмотров/элементы/index.html.erb:
<%= link_to 'All', {action:'filter', filter:'all'}, remote:true %>
<%= link_to 'To Buy', {action:'filter', filter:'to_buy'}, remote:true %>
<div id="items">
<%= render 'items' %>
</div>
WebBrick работает в режиме разработки, так кэширование не должно быть включено. Я мог бы установить метод на что-то другое, кроме GET, но технически это было бы неправильно. Есть ли возможность убедиться, что link_to не возвращает кешированный контент? Я использую Rails 3.2.13.
приложение/контроллеры/items_controller.rb:
def filter
case params[:filter]
when 'to_buy' then
@items=Item.where('to_buy=?', true)
when 'all' then
@items=Item.all
end
end
приложение/просмотров/элементы/filter.js.erb:
$('#items').html("<%=j render 'items' %>");
UPDATE
Единственное решение, которое я мог бы придумать было превратить link_tos в обычные ссылки HTML и заставить JQuery выполнить запрос ajax с установленным кешем в значение false:
приложение/просмотров/элементы/index.html.erb:
<a href="javascript:;" class="filter_link" data-filter="all">All</a>
<a href="javascript:;" class="filter_link" data-filter="to_buy">To Buy</a>
приложение/активы/JavaScripts/items.js.coffee:
$('.filter_link').click ->
filter=$(this).data('filter')
$.ajax "items/filter/#{filter}", cache:false
Действительно ли это действие контроллера? ссылки не имеют имени контроллера –
Он каждый раз нажимает на контроллер (WebBrick выводит SQL, который он выполняет), но возвращает 304 ответ на браузер. Атрибут контроллера не требуется. –