У меня довольно простая модель «Пользователь», управление и представления для приложения Rails.Я пытаюсь добавить раздел «профиль», в котором пользователь может обновить свою информацию о пользователе после входа в систему (и сохранения своего user_id в качестве переменной сеанса).
Я создал базовую модель «профиля», контроллер ипредставления (_form, индексировать и редактировать все с помощью simple_form).Модель пуста, и представления являются в значительной степени копией пользовательских представлений, за исключением того, что я переместил формат 'show' в представление индекса профиля.В моем контроллере я в значительной степени скопировал пользовательский контроллер, удалил действия new, create, show и destroy.
Вот что у меня есть:
class ProfileController < ApplicationController
def index
@profile = User.find(session[:user_id])
end
def edit
@profile = User.find(session[:user_id])
end
def update
@profile = User.find(session[:user_id])
respond_to do |format|
if @profile.update_attributes(params[:profile])
redirect_to @profile, notice: 'Profile was successfully updated.'
else
render action: "edit"
end
end
end
end
Я пробовал оба этих формата маршрутов:
match "profile" => "profile#index"
match "profile/edit" => "profile#edit"
match "profile/update" => "profile#update"
и
controller :profile do
put 'profile/update' => :update
get 'profile' => :index
get 'profile/edit' => :edit
end
Когда я загружаю ~ / profile / edit /, форма отображается правильно и мои поля заполняются.Я использую simple_form, и вот начало моего файла _form.html.erb:
<%= simple_form_for @profile, :url => url_for(:action => 'update', :controller => 'profile'), :html => { :id => "edit_profile", :class => 'form-horizontal' }, :method => 'put' do |f| %>
, но simple_form по-прежнему передает for="user_***"
на все поля ввода.
Я обновил @profile.update_attributes(params[:profile])
до @profile.update_attributes(params[:user])
, думая, что это проблема.Когда я нажимаю «Обновить пользователя» (все еще ссылается на модель пользователя).Форма перезагружается в ~ / profile / update, но ничего не происходит.
Я почти уверен, что мне не хватает очевидной проблемы с маршрутизацией / моделью, но я не могу понять это самостоятельно.