разработать контроллер регистрации + скрепка - PullRequest
7 голосов
/ 21 апреля 2011

Я пытаюсь переопределить разработку контроллера регистрации, чтобы пользователь мог загрузить свой аватар вместе с изменением других данных и обрезать userpic после загрузки.

Я добавил все необходимые атрибуты скрепки пользователя, создал вид обрезки, и мой контроллер регистрации выглядит так:

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

но когда я отправляю форму с картинкой, ничего не происходит, за исключением того, что firefox показывает "загрузка ..." навсегда! абсолютно нет обновлений в журнале разработки ..: (

Может кто-нибудь сказать мне, что я могу делать не так?

пс. Форма редактирования пользователя выглядит так:

<%= form_for(@user, :url => registration_path(@user), :html => {:id => "userpic_form", :method => :put, :multipart => true}) do |f| %>
 <p class="box1_po">Current password: <%= f.password_field :current_password %></p>
 <p class="box1_po">Please select your user picture:
                                            <%= f.file_field :avatar  %>
 </p>
 <input type="submit" class="usubmit"><%= link_to "UPLOAD", "#", :onclick => "$('#userpic_form').submit();"%>
<% end %>

Ответы [ 3 ]

7 голосов
/ 08 мая 2011

происходит, мне просто нужно было добавить

attr_accessible :avatar

в модели пользователя, и он начал работать правильно

2 голосов
/ 28 декабря 2013

Если вы используете Rails 4 , добавьте следующее к 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 голосов
/ 25 марта 2017
  1. Убедитесь, что параметр разрешен в контроллере, как показано ниже: `

    def configure_permitted_parameters
          devise_parameter_sanitizer.permit(:account_update, keys: [:firstname,
                      :lastname, :username, :password, :email, :bio, 
                      :avatar,:password_confirmation, :current_password ])
    end`
    
  2. Убедитесь, что вы добавили этот тег: :html => { :multipart => true } в вашу форму:

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

...