Подтвердить что ты не робот

Как установить флажок по умолчанию в "Rails 1.2.3"?

Как я могу установить флажок по умолчанию как "проверен", когда он отображается вначале?

Я не нашел способ Rails для этого (что работает), поэтому я сделал это с помощью JavaScript. Есть ли способ сделать это в Rails? Я использую Rails 1.2.3.

4b9b3361

Ответ 1

Если вы используете check_box в контексте формы, то флажок будет показывать любое значение, которое имеет это поле.

@user = Person.find(:first)
@user.active = true
check_box 'user', 'active'  #=> will be checked by default

Если вы используете check_box_tag, третьим параметром является начальное состояние (check_box_tag doc)

check_box_tag "active", 1, true

Ответ 2

Rails 3.x

= form_for(@user) do |f|
  = f.check_box :subscribe, {checked: true, ...}

Задает проверенное состояние true и должно работать нормально. Обратите внимание на синтаксис ruby ​​1.9.x хеша, для ruby ​​1.8.x используйте формат хэш-тегов {: checked = > true,...}

Ответ 3

В вашем новом действии контроллера попробуйте:

@user = User.new(:male => true)

Где: мужчина - это атрибут, который вы хотите проверить по умолчанию на страницах /users/new. Это передаст атрибут :male для представления со значением true, в результате появится флажок.

Ответ 4

Я был шокирован тем, что ни один из ответов не разрешил 100% проблемы.
Поскольку все предлагаемые решения дадут результат checked в форме редактирования, даже если пользователь снял флажок.

<%= f.check_box :subscribe, checked: @event.new_record? || f.object.subscribe? %>

Работает для рельсов 4 +, не тестируется ниже.

Ответ 5

Простой

<%= f.check_box :subscribe, checked: "checked" %>

Ответ 6

Это работает на Rails 2.3.x и Rails 3.0.x!

При новом действии в контроллере флажок установлен в значение true.

# in the controller
def new
  @user = Person.find(:first)
  @user.active = true
end

В форме: флажок установлен при создании (по вызову new), но если проверка не выполняется, флажок остается установленным со значением, которое пользователь имеет сообщение.

# in the view
<%= form_for ..... |f| %>
  ...
  <%= f.check_box :active %>
  ...
<% end %>

Другим способом, , но не очень хорошим (если вы хотите изменить логику, которую вы должны выполнить для новой миграции), необходимо установить: default = > 1 в миграции данной модели и атрибут.

class CreatePeople < ActiveRecord::Migration
  def self.up
    create_table :people do |t|
      ...
      t.boolean    :active,             :null => false,
                                        :default => 1
      t.timestamps
    end
  end

  def self.down
    drop_table :people
  end
end

Ответ 7

Я сделал это таким образом.

Добавить скрытое поле со значением 0 ABOVE check_box_tag

<%= hidden_field_tag :subscribe, '0' %>
<%= check_box_tag :subscribe, '1', params[:subscribe] != '0' %>

На сервере проверьте с помощью != '0'

subscribe = params[:subscribe] != '0'