Rails - 无法禁用带有选项框的按钮

时间:2013-08-08 18:36:09

标签: ruby-on-rails

我有这个:

<%= form_tag do %>

<%= label_tag :name, 'Name: ' %><%= text_field_tag 'name' %>
<%= submit_tag 'submit', disabled: @op %>
<%= label_tag :dis_false, "True" %>
<%= radio_button_tag :dis, :true %><br />
<%= label_tag :dis_true, "False" %>
<%= radio_button_tag :dis, :false %><br />
<% end %>

路线设置正确且@op = params [:dis]。

现在,当我尝试选择“false”并单击“提交”时,该按钮将被禁用。这应该只在选择了选项框“True”时发生。所以我想知道,这里发生了什么?我基本上试图制作一个简单的应用程序,帮助我通过选项框启用/禁用按钮。

2 个答案:

答案 0 :(得分:1)

我想我得到你的回答,当你发送错误时@op被设置为"false"而不是false

试试这个:

@op = params[:dis] == "true"

这是:

params[:dis] # comes as a string "true" or "false", since these are values radio button returns.

params[:dis] == "true" # is true without quotes when radio button with value "true"
                       # false, without quotes, otherwise, for example when
                       # when params[:dis] is "false"

答案 1 :(得分:0)

在这种情况下,似乎'dis'更适合作为复选框。禁用/启用也可以通过javascript / coffeescript处理。将其添加到app / assets中的js.coffee文件中:

jQuery ->
  $("#dis").change ->
    $("#submit").attr "disabled", $("#dis").is(":checked")

或者在简单的jQuery中:

$(function() {
  $("#dis").change(function() {
    $("#submit").attr("disabled", $("#dis").is(":checked"));
  });
});

并更新您的表单字段:

<%= submit_tag 'submit', disabled: @op, :id => "submit" %>
<%= check_box_tag(:dis, '', false) %>