novato:problemas com a atualização / redirect perfil e friendly_id
-
14-11-2019 - |
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
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