Pergunta

Tentando reescrever meu perfil controlador que é interrompida neste ponto.Im usando friendly_id ter urls, como abaixo com os parciais edit_basics.haml, edit_details.haml, etc.

  • /users/me/editar/básico
  • /users/me/editar/interesses
  • /users/me/editar/detalhes

O problema é actualizar o meu perfil e redirecionar para o caminho correto após a atualização.Eu procurei e tentei várias coisas mas não adiantou até agora.

  • depois de submeter o formulário de edição que redireciona para /perfis/me
  • depois de actualizar /blog/me/editar/basics ele deve retornar a este local A atualização lança um erro na

    undefined method `update_attributes " para #<#:0x007f876e77d768>

    {"utf8"=>"✓", "_method"=>"colocar", "authenticity_token"=>"wqDebPGdHvXszFvXcaeWwRewA6puTVlv5icxx1zd3ku=", "perfil"=>{"formulário"=>"básico", "description"=>""}, "commit"=>"Salvar", "id"=>"myusername"}

    Claro ID não pode ser o nome de usuário

Rotas

  match '/users/:username' => "profiles#show"
  match '/users/:username/edit/:what' => "profiles#edit", :as => :edit_user

Ação De Atualização:

  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

Acção de edição:

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

fim

ATUALIZAÇÃO:Parece que o atributo id de sempre contém o nome do usuário e, portanto, não é possível atualizar

Foi útil?

Solução

Tente atualizar esta linha:

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

Em seu controlador para isso, e veja se isso ajuda:

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

Que vai retornar a instância do Perfil, não são os critérios.

Espero que ajude.

\\ Emil

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top