我有一个表单的check_box_tag,用于更新:show_hometown
的用户个人资料属性。当我提交表格以切换:show_hometown
的值时,无论属性如何变化,复选框输入的值都是“1”。有人可以帮我弄清楚我做错了吗?
这是我的表格:
<%= form_tag({:action => "edit_show_hometown_settings", :controller => "profiles"}, :html => {:multipart => true }) do %>
<%= check_box_tag :show_hometown, 0, 1 %>
<%= @user.profile.hometown %>
<% end %>
以下是我正在更新属性的控制器中的操作:
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
最后,我用于创建:show_hometown
属性的迁移:
t.boolean :show_hometown, :default => true
答案 0 :(得分:0)
尝试:
@profile.show_hometown == false || @profile.show_hometown == "0"
复选框将返回“0”值,而不是false,显然ruby不会将“0”理解为false(我的开发平台将“0”理解为false,但我的生产平台没有,而且我不知道原因;它可能是红宝石版本。)