【问题标题】:How to get information from a checkbox back into the DB in Ruby如何将复选框中的信息返回到 Ruby 中的数据库
【发布时间】:2019-08-09 07:46:51
【问题描述】:

我很确定我在这里是个白痴,但我已经离开 Ruby 太久了,以至于我的搜索没有找到正确的答案。

我有一个带有复选框的弹出窗口。如果用户选中复选框,我希望在用户表中设置一个标志,以便复选框不会再次出现。

我已经有了代码,如果设置好,则不会出现弹出窗口。我无法将复选框状态更改回数据库...

复选框代码如下所示:

    %button.btn.btn-primary.slide_show_next{:type => "button", :data => {:toggle => "modal", :target => "#help_slide_show_2", :dismiss => "modal"}}
      Next
      .show-slideshow
        %label
          %input.show-slideshow-checkbox{:type => "checkbox", :checked => "checked"}
          Show me this when I view a report.

相关的coffeeScript是:

$ ->
  if typeof(gon) != 'undefined' && gon.show_help_slide_show == true && document.cookie.indexOf("show-slide-show=false") == -1
    $("#help_slide_show").modal()

  if document.cookie.indexOf("show-slide-show=false") != -1
    $(".show-slideshow-checkbox").attr("checked", false)

  $(".show-slideshow-checkbox").change( (event) ->
    val = $(event.target).prop("checked")

    document.cookie = "show-slide-show=#{val}; Path=/;"
    $(".show-slideshow-checkbox").attr("checked", val)
  )

【问题讨论】:

    标签: ruby-on-rails ajax gon


    【解决方案1】:

    查看form_for。这将帮助您从视图更新模型。下面是一个haml form_for 的代码,等效的erb 可以在form_for 文档中找到。我发现对于某些语法问题,haml 文档没有我想要的那么健壮。

    = form_for @user, remote: true do |f|
        = f.label 'checkbox'
        = f.check_box :table_column, autofocus: true
        = f.submit
    

    【讨论】:

    • 我同意这可能是正确的解决方案,但我似乎没有 \@client (这里相当于 \@user)...我有一个 HAML,并且一杯咖啡,但没有实际的 rb 文件,所以没有控制器可以告诉 \@user?这是应该如何工作的吗?
    • 我不确定这是否可行,因为没有真正的“提交”按钮......只是,有一个复选框,如果你选中它并杀死弹出窗口,它注册...
    • 您需要为此视图定义一个控制器。如果没有控制器,您将无法管理视图。如果 form_for 在此上下文中不起作用,请查看从弹出窗口中对客户端控制器中的更新操作进行 Ajax 调用。无论哪种情况,您都需要一个控制器来处理这些请求。如果您仍然想尝试 form_for,您可以在单击复选框时触发提交按钮,并有一个包含相关详细信息的隐藏字段以更新表格中的该列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2022-07-07
    • 2016-07-13
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多