Ruby on Rails - значение cookie отображается только при обновлении - PullRequest
2 голосов
/ 04 декабря 2009

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

Для этого я устанавливаю значение cookie из контроллера, как это

if cookies[:per_page].blank?
    cookies[:per_page] = "50" # this is the default value for a new user and incase the existing user deletes the cookie
 else
    cookies[:per_page] = params[:noofimages_perpage].to_s # this is the value selected in the drop down   
 end
     @pp = cookies[:per_page] 
     # further processing with the cookie value here
end  

Но я не получаю значение в куки [: per_page].

Для проверки значения в куки, я добавил эту строку в мое представление

<%= @pp %>  

и представление отображает значение только после обновления.

Часть представления здесь

<select name="noofimages_perpage" onchange="call the controller">
 <option value="50">50</option> 
 <option value="100">100</option>
 <option value="150">150</option>
</select>

После прочтения нескольких постов и статей я понимаю, что запись в cookie не будет доступна до следующей обратной передачи.

Несколько советов о том, как справиться с этим или обойтись, пожалуйста?

Насколько это возможно, я хочу достичь этого, не касаясь базы данных.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 04 декабря 2009

Попробуйте

per_page = cookies[:per_page]
if per_page.blank?
    per_page = "50" # this is the default value for a new user and incase the existing user deletes the cookie
 else
    per_page = params[:noofimages_perpage].to_s # this is the value selected in the drop down   
 end
 @pp = per_page
 cookies[:per_page] = per_page
 # further processing with the cookie value here
end
0 голосов
/ 04 декабря 2009

Cookie не устанавливается в контроллере, но в ответе контроллера (потому что это вещь браузера). это означает, что cookie устанавливается, когда страница отображается. Вы не можете получить к нему доступ на этой странице, но на следующей странице или обновить.

рассматривать перенаправление (на ту же страницу) как обходной путь

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