Получить флажок для отображения как проверено, если логическое значение равно false - PullRequest
5 голосов
/ 13 января 2012

У меня есть форма, работающая в настройках моего пользователя для отображения или скрытия части профиля пользователя.Форма - check_box_tag, и при ее нажатии я использую jQuery для отправки формы.Это все работает хорошо.Нажатие на флажок переключает логическое значение с true на false или наоборот.Тем не менее, я бы хотел, чтобы флажок отображался как проверенный, если значение моего логического значения равно false.Как мне сделать это, учитывая мой код ниже?

Мой контроллер действия для update_attribute профиля:

def edit_show_hometown_settings
  @profile = current_user.profile
  if @profile.show_hometown == true
    if @profile.update_attributes(:show_hometown => false)
      redirect_to settings_path
    else
      redirect_to settings_path, :notice => 'Oops, something went wrong. Please try again.'
    end
  elsif @profile.show_hometown == false
    if @profile.update_attributes(:show_hometown => true)
      redirect_to settings_path
    else
      redirect_to settings_path, :notice => 'Oops, something went wrong. Please try again.'
    end
  end
end

Моя форма:

<%= form_tag({:action => "edit_show_hometown_settings", :controller => "profiles"}, :html => {:multipart => true }) do %>
  <%= check_box_tag :show_hometown %>
  <%= @user.profile.hometown %>
<% end %>

JQueryЯ использую для отправки формы:

$(function(){
    $(':checkbox').live('click',function() {
        $(this).closest('form').submit();
    });
});

1 Ответ

10 голосов
/ 13 января 2012

Я немного смущен вашей логикой, но, думаю, вы поняли идею.Просто измените истину и ложь по мере необходимости.Это установит флажок на флажок, если @ user.profile.hometown установлен на false.

<%= check_box_tag :show_hometown , 1 , @user.profile.hometown ? false : true %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...