2017-02-03 5 views
0

У меня возникает странная проблема при попытке добавить флажок (для логического поля) в мои формы. Формы отлично работают при обновлении текстовых полей или полей файлов, но, так как я добавил в поле логического поля, после проверки любого из этих флажков кнопка формы отправки «отключает» себя.Почему этот Rails submit_tag отключается, когда я устанавливаю флажок?

Я не могу показаться, чтобы выяснить, как и где из Rails делает это за кулисами:

Мой код, как показано ниже:

<%= simple_form_for @resource, url: resources_path do |f| %> 
<div class="form-items"> 

    <div class="form-item full"> 
    <%= f.input :name, autofocus: true %> 
    </div> <!-- /.form-item full --> 

    <div class="form-item"> 
    <%= f.input :file, as: :file %> 
    </div> <!-- /.form-item --> 

    <div class="form-item"> 
    <%= f.input :public_file %> 
    </div> <!-- /.form-item --> 

</div> <!-- /.form-items --> 

<%= f.button :submit, 'Add Resource', class: 'button' %> 
<% end %> 

public_file является логическое поле, которое помечено как :

t.boolean "public_file",  default: false 

в схеме базы данных

Кнопка отправить начинается с этой оказанной HTML

<input type="submit" name="commit" value="Add Resource" class="btn button" data-disable-with="Add Resource"> 

, но как только я установить флажок:

<input type="submit" name="commit" value="Add Resource" class="btn button" data-disable-with="Add Resource" disabled> 

Я на самом деле не слишком уверен, как отладить это и не нашли какой-либо документация по Rails автоматически отключает формы? Может ли это быть тем, что происходит?

Любые указатели очень получены!

+0

ваша форма объект «е», то что is 't' in 't.boolean "public_file", по умолчанию: false' –

+0

@HardikUpadhyay извините, что есть в схеме базы данных –

ответ

0

просто заменить вашу

<%= f.input :public_file %> 

с

<%= f.check_box :public_file %> 

Надежда, она будет работать.

+0

Спасибо Hardik, используя simple_form, хотя он принимает несколько иной синтаксис –

+0

Я боюсь, что это не правильный ответ, см. выше. –

+0

есть другой способ делать то же самое, что зависит от вас, что вы адаптируете. –

0

Попробуйте отключить проверку по умолчанию с помощью опции novalidate. Чтобы добавить 'public_file' в качестве флажка, используйте as: :boolean.

<%= simple_form_for @resource, url: resources_path, html: { novalidate: true } do |f| %> 
<%= f.input :public_file, as: :boolean %> 
+0

Спасибо за советы, стоит знать, даже если проблема закончилась тем, что у вас не было изоляции JS! –

0

Похоже, что я был жертвой неправильной изоляции функций Javascript. Проблема связана с другой функцией, предназначенной для другой страницы.

Извините за это, начал пытаться добавлять классы тела и с помощью инструкции, как следующее для изоляции (как можно) JS в Rails:

return unless $('.students.index').length > 0 
Смежные вопросы