У меня есть несколько флажков, которые отправляют и изменяют значение атрибута в моем профиле.Атрибут был создан как логическое значение с :default => true
.Для каждого другого флажка, который я установил подобным образом, значение атрибута равно true
/ false
.Однако этот флажок либо true
, либо nil
.
Несмотря на то, что все настраивается одинаково, как это возможно?Мне нужна форма, чтобы изменить только значение на true или false.Не нольКто-нибудь может мне помочь?
Вот миграция, которая добавляет столбец в мою таблицу профилей:
class AddAccessItemsToProfiles < ActiveRecord::Migration
def self.up
add_column :profiles, :access_items, :boolean, :default => true
end
def self.down
remove_column :profiles, :access_items, :boolean, :default => nil
end
end
(Прежде чем я продолжаю, я замечаю, что self.down равен :default => nil
,но у меня есть это в других миграциях, которые работают. Плюс я не думал, что это вызовет проблему.)
Вот мое действие контроллера для обновления значения:
def access_items_settings
if current_user.profile.update_attributes(:access_items => params[:access_items])
redirect_to settings_path
else
redirect_to settings_path, :notice => 'Oops, something went wrong. Please try again.'
end
end
Здесьэто форма, которую я отправляю:
<%= form_tag(access_items_settings_path, :method => :put) do %>
<p class="setting"><%= check_box_tag(:access_items, 1, @user.profile.access_items ? true : false) %>
This lets your items be accessed.
<br><span class="indentClarify">(Some details.)</span></br></p>
<% end %>
(я удалил лишние br
, p
, span
, но это ничего не сделало.)
И, наконец, jQuery:
$(function(){
$(':checkbox').live('click',function() {
$(this).closest('form').submit();
});
});