我有这个:
<%= 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”时发生。所以我想知道,这里发生了什么?我基本上试图制作一个简单的应用程序,帮助我通过选项框启用/禁用按钮。
答案 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) %>