保持在HAML中选中复选框

时间:2012-10-20 11:23:12

标签: ruby-on-rails 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'

我还指定默认选中复选框,但加载页面时不会检查它们...

3 个答案:

答案 0 :(得分:5)

这将实现您的目标:

    = form_tag movies_path, :method => :get do
      Include:
      - @all_ratings.each do |rating|
        = rating
        = check_box_tag "ratings[#{rating}]", rating, if params[:ratings]; params[:ratings].include?(rating) end
    = submit_tag 'Refresh'

调用后params[:ratings]实例仍然存在,因此您可以使用它来标记之前用户点击的框。

答案 1 :(得分:2)

超新星32非常接近。

唯一缺少的是基于您的最后一行“...指定默认情况下应选中复选框。”

您的代码应如下所示:

= check_box_tag“评分[#{rating}]”,1,如果参数[:rating]; params [:ratings] .include?(评级)else true end

只需在param不存在的时候(默认状态)包含ELSE语句。

答案 2 :(得分:0)

我认为复选框不代表您的业务数据的某些持久状态(否则这不适用),但它们实际上是一种“过滤器”或类似于暂时配置视图。

在这种情况下,您应该只向AJAX请求结果,而不是复选框。因此,您不必将它们存储在任何地方,因为它们不会消失。