новичок: проблемы с обновлением / перенаправлением профиля и friendly_id - PullRequest
0 голосов
/ 29 февраля 2012

Попытка переписать мой контроллер профиля, который в данный момент не работает.Я использую 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 всегда содержит имя пользователя пользователя и поэтому не может обновлять

1 Ответ

1 голос
/ 29 февраля 2012

Попробуйте обновить эту строку:

@profile = Profile.where(params[:id])

В вашем контроллере к этому, и посмотрите, поможет ли это:

@profile = Profile.where({ :id => params[:id] }).first

Это вернет экземпляр профиля, а не критерии.

Надеюсь, это поможет.

\\ Эмиль

...