2011-04-21 12 views
7

Próbuję przesłonić kontroler rejestracji, aby użytkownik mógł przesłać swój awatar wraz ze zmianą innych danych i przyciąć userpic po przesłaniu.Wymyśliłem kontroler rejestrowania + spinacz

I dodaje wszystkie necesarry atrybuty paperclip użytkownika, utworzony widok upraw, a mój kontroler rejestracje wygląda tak:

class RegistrationsController < Devise::RegistrationsController 
    def update 

    if params[resource_name][:avatar].blank? 
      super 
    else 
      @user=resource 
     respond_to do |format| 
     if resource.update_attributes(params[resource_name]) 
      flash[:notice]='Avatar successfully uploaded.' 
      format.html { 
        render :action => 'crop' 
      } 
      format.xml { head :ok } 
      else 
      format.html { render :action => "editpicture" } 
      format.xml { render :xml => @demotivator.errors, :status => :unprocessable_entity } 
      end 
     end 
    end 
    end 

end 

ale kiedy przesłać formularz z obrazu, nic się nie dzieje, poza tym, że firefox pokazuje „ładowanie. .." na zawsze! absolutnie żadnych aktualizacje w dzienniku rozwoju .. :(

może ktoś mi powiedzieć co mogę robić źle forma edit

ps użytkownik wygląda tak:?.

Odpowiedz

7

występuje po prostu musiałem dodać

attr_accessible :avatar 

w modelu użytkownika, a on zaczął pracować prawidłowo

+4

Jak to się dzieje w przypadku aplikacji Rails 4? –

2

Jeśli jesteś stosując Rails 4, dodać następujące do RegistrationsController

# get devise to recognize the custom fields of the user model 
before_filter :configure_permitted_parameters, if: :devise_controller? 

protected 

    def configure_permitted_parameters 
     devise_parameter_sanitizer.for(:account_update) do |u| 
      u.permit(:avatar, :email, :password, :password_confirmation) 
     end 
    end 
0
  1. Upewnij param jest dozwolona w sterowniku jak poniżej: `

    def configure_permitted_parameters 
         devise_parameter_sanitizer.permit(:account_update, keys: [:firstname, 
            :lastname, :username, :password, :email, :bio, 
            :avatar,:password_confirmation, :current_password ]) 
    end` 
    
  2. Upewnij się, że dodatek ten tag : :html => { :multipart => true } do formularza:

    <%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }, :html => { :multipart => true }) do |f| %>