我的一个视图中有一个下拉列表,允许我选择页面上的图像数量。我想记住该页面上的选择,因此当用户回来时,显示的图像数量是他们上次选择的图像。
为了达到这个目的,我在控制器中设置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
但是我没有得到cookies [:per_page]的价值。
为了检查cookie中的值,我将此行添加到我的视图
<%= @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写入将无法使用。
有关如何处理此问题或解决方法的一些指示?
我希望在不触及数据库的情况下实现这一目标。
非常感谢
答案 0 :(得分:0)
在控制器中没有设置cookie,而是在控制器的响应中(因为它是浏览器)。这意味着在呈现页面时设置cookie。你无法在这个页面上访问它,但在下一页或刷新。
考虑重定向(到同一页面)作为变通方法
答案 1 :(得分:0)
尝试
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