2013-08-08 3 views
0

У меня есть это: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 [: дис].

Теперь, когда я пытаюсь выбрать «ложь» и нажать «отправить», кнопка будет отключена. Это должно произойти только при выборе optin-box «True». Поэтому мне было интересно, что здесь происходит? Я в основном пытался создать простое приложение, которое поможет мне включить/отключить кнопку с помощью окна параметров.

+0

вы это делаете с помощью JavaScript ? не могли бы вы отключить кнопку отправки кода? – juanpastas

ответ

1

Я думаю, что получаю ваш ответ, когда вы отправляете false @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" 
+0

Вы говорите, что вывод params [: anythinggoeshere] всегда является строкой? Btw Я также пробовал @op = eval (params [: dis]), который тоже работал. – daremkd

+0

Насколько я видел, да. eval не подходит в этом случае, поскольку пользователь может отправить произвольный код в param. – juanpastas

+0

Не может это понять? : обозначение, я знаю, что это если/затем сокращенная нотация, но что это значит? Это называется сокращенной нотации? – daremkd

0

кажется 'Дис' будет лучше подходит в качестве флажка в этом случае. Отключить/включить можно также обрабатывать через javascript/coffeescript. Добавьте это в ваш файл 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) %> 
+0

Я новичок в Rails и не очень хорошо знаком с jquery/JS, так что я бы оценил решение Rails. Благодарю. – daremkd

+0

Для фрагмента jquery вы можете буквально вставить его ниже вашей формы, завернутый в теги . – Drew

Смежные вопросы