我使用Rails 3.2.16并设计3.2.2。
我已将(隐藏)字段account_level
添加到我的设计注册表单中。这由URL中的查询字符串填充,具体取决于用户选择的计划。
如果用户在注册表单中出现错误,例如密码不匹配或未填写必填字段,则注册页面会重新加载并显示错误。但是,account_level
字段现在为空,并且网址上没有查询字符串供我从中提取数据。
我怎样才能有轨道"记得"如果发生错误,页面重新加载后该字段中的内容是什么?
奖金健全性检查问题:是否有更好的方法来传递用户在注册时选择的计划?
----------- 更新 -----------
我结合使用了Shamsul和aelor的答案。我最终抓住查询字符串的值并使用javascript将其保存在cookie中。如果页面然后从验证错误重新加载,并且URL上的查询字符串不再存在,我会查找已设置的cookie并从中获取值以填充隐藏字段。
我想在前端尽可能多地保留,这就是我选择JS解决方案的原因。我还觉得,饼干是一种比本地存储更加经过试验和测试的。
答案 0 :(得分:1)
使用localStorage。
您可以在用户点击时保存您的计划。
localStorage.setItem('plan','premium');
然后你可以检查项目并填写隐藏的字段。
if(localStorage.getItem('plan') != null){
$('#hiddeninput').val(localStorage.getItem('plan'));
}
您可以随时使用
删除该计划localStorage.removeItem('plan');
答案 1 :(得分:1)
在devise的registrations_controller.rb中
将 account_level 字段存储在Cookie中
def new
if params[:account_level]
cookies[:account_level] = params[:account_level]
end
#other code
end
def create
if resource.save
unless cookies[:account_level].nil?
cookies.delete(:account_level)
#do other coding
end
end
end
这样,重新启动页面后 account_level 字段不会为空。