我的用户设置中有一个表单用于显示或隐藏用户个人资料的一部分。表单是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();
});
});
答案 0 :(得分:10)
我对你的逻辑感到困惑,但我想你明白了。只需根据需要改变真假。如果@ user.profile.hometown设置为false,则会将复选框设置为选中。
<%= check_box_tag :show_hometown , 1 , @user.profile.hometown ? false : true %>