Вам нужно передать весь хеш в вызов .update_attributes
.
Предпочтительно вы поместите school_id
внутри user
, чтобы он выглядел как
# params[:user] = { school_id: 1 }
@user.update_attributes(params[:user])
Или вы могли бы вручную ввести идентификатор школы
@user.update_attributes(school_id: params[:school_id])
Или, еще лучше, подтвердите связь
@user.school = School.find(params[:school_id]
Путь, который вы хотите, -
user_add_school_path(@user, school_id: 1)
Вы можете записать InverseBooleanToVisibilityConverter
.
Измените свой XAML на этот
GlowBrush="{DynamicResource AccentColorBrush}"
WindowStartupLocation="CenterScreen" >
<Window.Resources>
<!--YOUR CONVERTER -->
</Window.Resources>
<Window.Visibility>
<Binding Path="WindowVisible" Converter="{StaticResource BooleanToVisibilityConverter}" />
</Window.Visibility>
Если все еще не работает, поместите контрольную точку на геттер WindowVisible
и посмотрите, пытается ли конвертер его получить.
I просто попробовал это, и это сработало, поэтому дайте мне знать, если это не для вас
Это то, что я сделал, чтобы переопределить содержимое окна.
ContentOverride.OverRideContent<WindowtobeHide>(userControl);
public static class ContentOverride
{
public static void OverRideContent<T>(UserControl objMain)
{
foreach (Window window in Application.Current.Windows)
{
if (window.GetType() == typeof(T))
{
window.Content = objMain;
window.Activate();
}
}
}
}
Вы можете использовать
window.Visibility = Visibility.Hidden;
, чтобы скрыть вместо замены содержимое, как то, что я делаю