Newbie: Вопросы с обновлением / перенаправить профиль и дружелюбный_id
-
14-11-2019 - |
Вопрос
Попытка переписать мой контроллер профиля, который разбит на данный момент. Я использую Friendly_id, чтобы иметь URL-адреса, как приведенные ниже с частичными edit_basics.haml, edit_details.haml и т. Д.
- .
- / Пользователи / Меня / Редактирование / Основы
- / Пользователи / Меня / Редактирование / интересы
- / Пользователи / Меня / Редактирование / Детали
Проблема в обновлении моего профиля и перенаправления на правильный путь после обновления. Я искал и пробовал несколько вещей безрезультатно.
- .
- После отправки Форма редактирования он перенаправляет / профили / я
-
После обновления / пользователей / me / edit / basics Это должно вернуться в это местоположение Обновление бросает ошибку в
Неопределенный метод `update_attributes" для # <#: 0x007f876e77d768>
{"utf8"=> "✓", "_method"=> "положить", "Authenticity_token"=> "wqdebpgdhvxszfvxcaewwwa6putvlv5icxx1zd3ku=", «Профиль»=> {"Форма"=> "Основы", «Описание»=> ""}, «Commit»=> «Сохранить», «ID»=> «Мисорасмен»}
Конечно ID не может быть именем пользователя
Маршруты
.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
конец
Обновление: Похоже, что атрибут ID всегда содержит имя пользователя пользователя и, следовательно, не может обновить
Решение
Попробуйте обновить эту строку:
@profile = Profile.where(params[:id])
.
В вашем контроллере к этому и посмотрите, поможет ли это:
@profile = Profile.where({ :id => params[:id] }).first
.
Это вернет экземпляр профиля, а не критерии.
Надеюсь, это поможет.
\\ emil