Я пытаюсь выяснить, как лучше всего установить флажки для правильного отображения их текущего состояния. Это то, что у меня есть в моей форме
<%= form_for @user, :url => user_notification_preferences_path(@user), :method => :put do |f| %>
<%= f.fields_for :notification_preferences, @user.notification_preferences do |p| %>
<%= p.check_box :notify_on_friend_post %>
<%= p.check_box :notify_on_friend_post %>
<%= p.check_box :notify_on_friend_request %>
<%= p.check_box :notify_on_friend_comment %>
<% end %>
<%= f.submit %>
<% end %>
messages_preferences - это сериализованный хэш для моей модели пользователя
class User < ActiveRecord::Base
serialize :notification_preferences, Hash
Моя проблема, которая не имеет значения, что я пытаюсь, я не могу получить флажки, чтобы отражать существующее состояние значений хеш-функции. То есть, если хеш уже содержит: notify_on_friend_post => 1, то флажок для этого значения должен быть установлен.
Форма отправляет данные в порядке, и я также могу обновить свою модель.
Обновление
используя check_box_tag я могу заставить это работать
<%= p.hidden_field :notify_on_friend_post, :value => "0" %>
<%= check_box_tag "user[notification_preferences][notify_on_friend_post]", "1", @user.notification_preferences[:notify_on_friend_post] == "1" ? true : false %>
ужасно, но работает, все еще надеясь, что я упускаю что-то очень очевидное