Newbie: Вопросы с обновлением / перенаправить профиль и дружелюбный_id

StackOverflow https://stackoverflow.com/questions/9496277

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top