Попытка переписать мой контроллер профиля, который в данный момент не работает.Я использую friendly_id, чтобы получить URL-адреса, как показано ниже, с частямиинтересы
/ users / me / edit / details
Проблема заключается в обновлении моего профиля и перенаправлении на правильный путь после обновления.Я искал и пробовал несколько вещей безрезультатно.
- после отправки формы редактирования он перенаправляет в / profile / me
после обновления / users / me / edit/ basics должен вернуться в это место. Обновление выдает ошибку в
неопределенный метод `update_attributes 'для # <#: 0x007f876e77d768>
{" utf8 "=>" ✓ "," _method"=>" put "," authenticity_token "=>" wqDebPGdHvXszFvXcaeWwRewA6puTVlv5iCXX1ZD3KU = "," profile "=> {" form "=>" basics "," description "=>" "}," commit "=>" Save ","id" => "myusername"}
Идентификатор конечно не может быть именем пользователя
Маршруты
match '/users/:username' => "profiles#show"
match '/users/:username/edit/:what' => "profiles#edit", :as => :edit_user
Действие обновления:
def update
@profile = Profile.where(params[:id])
respond_to do |format|
if @profile.update_attributes(params[:profile])
format.html { redirect_to @profile, :action => "edit", :what => @profile.form, notice: 'Profile was correctly updated.' }
else
format.html { @profile, :action => "edit", :what => @profile.form }
end
end
end
Изменить действие:
def edit
@profile = Profile.find(params[:username])
what = params[:what]
if not what.nil?
if ["basics", "location", "details", "photos", "interests"].member?(what)
render :action => "edit_#{what}"
else
render :action => "edit_basics"
end
end
end
ОБНОВЛЕНИЕ: Кажется, что атрибут id всегда содержит имя пользователя пользователя и поэтому не может обновлять