【问题标题】:Get save checkbox values in haml even if submit button not selected即使未选择提交按钮,也可以在haml中保存复选框值
【发布时间】:2013-02-01 07:13:51
【问题描述】:

这是 SaaS(“烂土豆”)培训问题,去年已经讨论过很多次,但我似乎没有找到答案。

我有一个带有用于生成哈希命名评级的评级复选框的表单。然后我使用 params[:ratings] 将最新的复选框选择传递到不同的页面。当用户提交表单时,我的代码可以正常工作。但是如果他们在没有点击提交按钮的情况下四处走动,那么最新的值就会丢失。

我认为每当用户选中/取消选中复选框时都需要保存最新值,但不知道如何。

我需要使用 haml 和 ruby​​ 来执行此操作,而不是 javascript 等。

【问题讨论】:

  • 嗨,您需要提供一些我们可以查看的代码
  • 试图弄清楚如何发布代码
  • 删除代码,因为它违反了 edx 荣誉代码政策

标签: ruby-on-rails checkbox haml onchange


【解决方案1】:

在你的电影控制器中,你有一个实例变量@selected_ratings,你可以在其中保存所有当前的评级。

if params[:ratings] != session[:ratings] and @selected_ratings != {}
  session[:ratings] = @selected_ratings
  redirect_to :sort => sort, :ratings => @selected_ratings and return
end
@movies = Movie.find_all_by_rating(@selected_ratings.keys, ordering)

在电影索引中,在你拥有的 form_tag 中

= check_box_tag "ratings[#{rating}]", 1, @selected_ratings.include?(rating)

【讨论】:

  • 我从哪里获得当前评分?我认为 params[:ratings] 会有当前的收视率。除了重定向之外,我做了与您提到的类似的事情。还在想办法发布我的代码
  • 您需要在 form_tag movies_path ... 中显示收视率。从评分中提交刷新按钮后,在 params[:ratings] 中您将获得所有评分。
  • 即使用户没有提交,我也需要评分。如果他对复选框进行了一些更改,然后单击其他链接而不是刷新,我仍然想要最新的复选框值。
  • 哦,我认为这是不可能的 :-? .我的意思是,不是没有javascript。你确定这是你需要的吗?
  • 如果用户点击“More about #{movie.title}”链接而不进行刷新,我会丢失最新的复选框值 这是生成的 swb 页面的链接 - link
【解决方案2】:

为了完整起见。

要求是,如果用户关闭网页并稍后返回,则之前的选择应该可用。所以我用 cookie 做了,并通过了测试用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多