Ruby on Rails - Cookie值仅在刷新时显示

时间:2009-12-04 14:27:29

标签: ruby-on-rails cookies

我的一个视图中有一个下拉列表,允许我选择页面上的图像数量。我想记住该页面上的选择,因此当用户回来时,显示的图像数量是他们上次选择的图像。

为了达到这个目的,我在控制器中设置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写入将无法使用。

有关如何处理此问题或解决方法的一些指示?

我希望在不触及数据库的情况下实现这一目标。

非常感谢

2 个答案:

答案 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