2012-02-13 1 views
0

Взятие Post в качестве примера модели, скажем, Post имеет 2 атрибута, оба из которых имеют проверки. Когда вы собираетесь редактировать сообщение, скажите, что я изменяю 2 атрибута, а один не проверяет правильность, заставляя эту страницу перезагружать. Мне кажется, что когда страница перезагружается, ранее сохраненные версии атрибутов сообщения отображаются в форме, а не только введенные атрибуты, хотя те, которые я только что ввел, находятся в параметрах.Получение параметров, подлежащих сохранению при обновлении в Rails

Это будет обрабатываться в типичных создавать действия, так как объявление переменной после экземпляра будет выглядеть следующим образом:

@post = Post.new(params[:post]) 

Однако в действиях обновления, переменная пост экземпляр выглядит следующим образом:

@post = Post.find(params[:id]) 

Для этого изменения, внесенные в форму, которые передаются в параметры, не перерисовываются в форме. Я описываю это правильно, и если да, то есть ли способ, которым я могу получить изменения, которые нужно визуализировать с помощью формы, когда проверка не выполняется? Или, может быть, только изменения, которые не подрывают проверку?

+2

Как выглядит ваша форма, и какова остальная часть вашего действия «update»? Вы должны иметь '@ post.update_attributes (params [: post])' там, где будет обновляться экземпляр Post с остальными параметрами. – coreyward

ответ

1

, как Corey говорит, что вы должны обновить атрибуты обновления так:

@post = Post.find (Params [: ID])

if @post.update_attributes(params[:post]) 
    redirect_to post_path(@post) 
else 
    render :new 
end 

вы в настоящее время не обновляя экземпляр поста , поэтому вы видите, что находится в базе данных.