检查复选框是否被选中

时间:2018-07-10 06:38:54

标签: ruby-on-rails ruby checkbox twilio

我正在尝试从头开始创建我的第一个Rails应用程序,但我认为我不应该为此使用Rails。我有一个使用方法make_calls的按钮,在make调用中,我进行了一系列不同的调用,这些调用由sleep语句分隔开,但是我仅在calls_check复选框被选中时才需要执行这些按钮。这是我所拥有的:
在我的控制器中:

# called from inside make_calls method
def individual_call(to_phone, xml_url)

call = @client.calls.create(
                           url: xml_url,
                           to: to_phone,
                           from: '+13474275841',
                           timeout: 20
                         )
if params[:calls_check] == '1'
    puts call.sid
end


在我看来:

<body>
    <div class="buttonDiv w3-display-middle">
         <%= check_box :calls_check, id: "calls_check" %>Make Calls
         <%= button_to "Start Call Sequence", action: "make_calls" %>
    </div>
</body>

但是,即使未选中该复选框,它仍会进行呼叫。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您应该使用check_box_tag而不是check_box

原因check_box接受第二个参数作为方法(该方法旨在返回一个整数,如果该整数大于零,则选中此复选框

使用check_box_tag

<%= check_box_tag :calls_check, 1, false %>

这意味着一旦选中该复选框,它将以'1'的形式发送参数,默认情况下它将以unchecked的形式发送;如果未选中,则不会发送calls_check(即params[:calls_check] = nil

在控制器端

# called from inside make_calls method
def individual_call(to_phone, xml_url)

call = @client.calls.create(
                           url: xml_url,
                           to: to_phone,
                           from: '+13474275841',
                           timeout: 20
                         ) if params[:calls_check].eql?('1')
    puts call.sid
end

用表格包装复选框,以便在单击按钮时发送数据,

用make_call操作路径及其make_calls_path methodget替换post。根据您定义的路线

<body>
  <div class="buttonDiv w3-display-middle">
    <%=form_tag make_calls_path, method: :get do %>
      <%= check_box_tag :calls_check, id: "calls_check" %>Make Calls
      <%= submit_tag "Start Call Sequence"%>
    <%end%>
  </div>
</body>