У меня есть форма, в которой пользователи вводят информацию профиля, которая сохраняется в модели пользователя. Мне нужно собрать еще одну информацию от пользователей на более позднем этапе (на другой странице). Как мне собрать эту информацию и добавить ее к существующей записи пользователя?
Вот мой код формы с одним дополнительным вводом, который мне нужен от пользователя. Когда я нажимаю "Отправить", он запускается без ошибок, но новое поле не сохраняется в моей модели. Я выполнил миграцию, чтобы добавить поле в модель.
<%= form_for @user, html: { method: :put }) do |f| %>
<div class="form-group">
<%= f.label :what_is_your_favorite_color %>
<%= f.text_field :color, class:"form-control" %>
</div>
<div class="form-group">
<%= f.submit "Submit", class:"btn btn-primary" %>
</div>
<% end %>
Мой метод обновления контроллера в настоящее время пуст ... вы можете сказать мне, как должен выглядеть метод обновления? Пользователь вошел в систему, поэтому мне нужно найти эту запись пользователя (возможно, по столбцу id?) И записать или обновить новый ввод в модель.
def update
??
end
1 ответ
Сначала вам нужно получить свою запись, передать ей хеш params, а Rails сделает все остальное.
def update
@record = Record.find(params[:id])
if @record.update(record_params)
redirect_to @record
else
render :edit
end
end
Если вы используете Rails 4, вам необходимо учитывать strong_parameters
. Поэтому добавьте новый атрибут к разрешенным атрибутам.
def record_params
params.require(:record).permit(:color, :and, :other, :attributes, :go, :here)
end
В приведенном выше коде предполагается, что идентификатор записи будет в хэше params, или, другими словами, вы используете маршруты RESTful. В противном случае вы можете передать идентификатор из сеанса (если это, как вы говорите, пользовательская запись, и вы используете Devise).
def update
@record = Record.find(current_user)
# ... the rest should be the same
end
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.
could not find User without an ID
. Что это обозначает?