我在HAML文档上有一些复选框,当点击'刷新'按钮时它应该改变显示的结果。这工作正常,但是当页面重新加载被选中的框时,所有这些都不再被选中。在HAML中保留复选框
如何重新配置HAML以在页面浏览中保持复选框选中状态?
= form_tag movies_path, :method => :get do
Include:
- @all_ratings.each do |rating|
= rating
= check_box_tag "ratings[#{rating}]", '1', true
= submit_tag 'Refresh'
我还指定的复选框都应该被默认选中,但是当我加载网页,他们将不检查...
我认为这可能是相当复杂的实现?(默认状态)。 。您必须以某种方式在请求之间保存复选框的状态。一种方法是在每次选中复选框时使用AJAX发送请求。然后服务器可以将信息存储在会话中。 另一种方式是将复选框信息存储在本地存储中,但这只适用于现代浏览器。 – Jesper
+1 @Jesper我认为这是您建议的一个很好的解决方案,不要太复杂。 skeniver checkout [jquery.ajax()](http://api.jquery.com/jQuery.ajax/)发送一个请求到一个控制器动作,点击复选框并将该复选框的id(或任何)存储到在会话中选择并将它们传递到您的视图中。 – cih
您可以将复选框逻辑保留在视图之外,而且应该让事情更轻松。例如,通过将新的类属性设置为params [:rating],然后将结果散列值从1更改为true,则不需要其他解决方案中描述的复杂逻辑。 – Horus