Activestorage, Devise, Rails 5.2 информация равна нулю - PullRequest
0 голосов
/ 14 февраля 2020

Я с этой конфигурацией: Activestorage на моем локальном хосте: 3000 с рельсами 5.2

У меня есть следующий код в моем пользователе:

"<div class="panel panel-default">
  <div class="panel-heading">
    <h1 class="display-4"> Seamos cómplices para cumplir nuestros sueños. </h1>
    <h3 class="text-center"> Llenando este sencillo formulario recibirás al final nuestra agenda biodinámica con los 12 pasos volver tu sueño realidad. </h3>
    <p style="text-align:center;">
    <iframe width="100%" height="315" align="middle" src="https://www.youtube.com/embed/pDKDtS6Z4oY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
    </p>
  </div>
  <div class="panel-body">
    <br /><br />
    <div class="container">
      <%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :post, class: 'form-horizontal' }) do |f| %>
      <%= devise_error_messages! %>
      <div class="stepwizard">
        <div class="stepwizard-row setup-panel">
          <div class="stepwizard-step">
            <a href="#step-1" type="button" class="btn btn-primary btn-circle">1</a>
            <p>Paso 1</p>
          </div>
          <div class="stepwizard-step">
            <a href="#step-2" type="button" class="btn btn-default btn-circle" disabled="disabled">2</a>
            <p>Paso 2</p>
          </div>
          <div class="stepwizard-step">
            <a href="#step-3" type="button" class="btn btn-default btn-circle" disabled="disabled">3</a>
            <p>Paso 3</p>
          </div>
        </div>
      </div>
      <form role="form">
        <div class="row setup-content" id="step-1">
          <div class="col-xs-12">
            <div class="col-md-12">
              <h3> Paso 1</h3>
              <br />
              <div class="form-group">
                <%= f.label :username, "Username (elige un nombre de usuario)" %>
                <br />
                <%= f.text_field :username, placeholder: "Elige el nombre de usuario que desees", class: "form-control", required: true, autofocus: true, type: "input" %>
              </div>
              <div class="form-group">
                <%= f.label :name, "Nombre" %>
                <br />
                <%= f.text_field :name, placeholder: "Pon aquí tu Nombre", class: "form-control", autofocus: true, type: "input" %>
              </div>
              <div class="form-group">
                <%= f.label :lastname, "Apellido" %>
                <br />
                <%= f.text_field :lastname, placeholder: "Pon aquí tu Apellido", class: "form-control", autofocus: true, type: "input" %>
              </div>
              <button class="btn btn-primary nextBtn btn-lg pull-right" type="button" >Siguiente</button>
            </div>
          </div>
        </div>
        <div class="row setup-content" id="step-2">
          <div class="col-xs-12">
            <div class="col-md-12">
              <h3> Paso 2</h3>
              <br />
              <div class="form-group">
                <%= f.label :email, "Correo Electrónico (email)" %>
                <br />
                <%= f.email_field :email, placeholder: "Ingresa tu correo electrónico", class: "form-control", autofocus: true, type: "input" %>
              </div>
              <div class="form-group">
                <%= f.label :password, "Contraseña" %>
                <br />
                <%= f.password_field :password, placeholder: "Ingresa tu contraseña", class: "form-control", autofocus: true %>
              </div>
              <div class="form-group">
                <%= f.label :password, "Repite tu contraseña" %>
                <br />
                <%= f.password_field :password_confirmation, placeholder: "Ingresa nuevamente tu contraseña", class: "form-control", autofocus: true %>
              </div>

              <div class="form-group">
                <%= f.label "Sube tu avatar (opcional)", class: 'col-sm-2 control-label'  %>
                <div class="col-sm-6">
                  <%= f.file_field :avatar, class: 'photo_upload' %>
                </div>

              </div>
              <br /><button class="btn btn-primary nextBtn btn-lg pull-right" type="button" >Siguiente</button>
              <button class="btn btn-info prevBtn btn-lg pull-left" type="button" >Anterior</button>
            </div>
          </div>
        </div>
        <div class="row setup-content" id="step-3">
          <div class="col-xs-12">
            <div class="col-md-12">
              <h3> Paso 3</h3><br />
              <div class="form-group">
                <%= f.label "País *", class: 'col-sm-2 control-label'  %>
                <div class="col-sm-6">
                  <%= f.text_field :country, placeholder: "Ingresa tu país de Residencia", class: "form-control" %>
                </div>
              </div>
              <div class="form-group">
                <%= f.label "Región", class: 'col-sm-2 control-label'  %>
                <div class="col-sm-6">
                  <%= f.text_field :region, placeholder: "Ingresa tu región de Residencia (Estado/Departamento/Provincia)", class: "form-control" %>
                </div>
              </div>
              <div class="form-group">
                <%= f.label "Ciudad/Población", class: 'col-sm-2 control-label'  %>
                <div class="col-sm-6">
                  <%= f.text_field :city, placeholder: "Ingresa tu Población (Ciudad/Municipio, Corregimiento, Vereda)", class: "form-control" %>
                </div>
              </div>
              <div class="form-group">
                <%= f.label "Fecha de Nacimiento (opcional)", class: 'col-sm-2 control-label'  %>
                <div class="col-sm-6">
                  <%= f.input :born_date, as: :date_picker, label: false, placeholder: "Da click en el botón de calendario de la derecha" %>
                </div>
              </div>
              <div class="form-group">
                <%= f.label "Facebook", class: 'col-sm-2 control-label'  %>
                <div class="col-sm-6">
                  <i class="fa fa-facebook"></i><%= f.text_field :facebook, class: "form-control", placeholder: "Ingresa la url - link de tu perfil de facebook" %>
                </div>
              </div>
              <div class="form-group">
                <%= f.label "Twitter", class: 'col-sm-2 control-label'  %>
                <div class="col-sm-6">
                  <i class="fa fa-twitter"></i><%= f.text_field :twitter, class: "form-control", placeholder: "Ingresa la url - link de tu perfil de facebook" %>
                </div>
              </div>
              <div class="form-group">
                <%= f.label "Sitio Web", class: 'col-sm-2 control-label'  %>
                <div class="col-sm-6">
                  <i class="fa fa-external-link"></i><%= f.text_field :website, class: "form-control", placeholder: "Si tienes sitio web y quieres compartir, pon aquí la url" %>
                </div>
              </div>
              <%= f.submit "¡Regístrate!", class: "btn btn-primary btn-lg pull-right" %>
              <button class="btn btn-info prevBtn btn-lg pull-left" type="button" >Anterior</button>
            </div>
          </div>
        </div>
      </form>
      <% end %>
    </div>
    <br />
    <div class="panel-footer">
      <%= render "devise/shared/links" %>
    </div>
  </div>
</div>"

Я выполнил настройку для activestorage :

  1. Добавлен storage.yml

"local:

  service: Disk
  root: <%= Rails.root.join("storage") %>

тест:

  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>"

Development.rb

"config.active_storage.service =: local"

test.rb:

"config. active_storage.service =: test "

Модель разработки пользователя:

" has_one_attached: avatar "

Приложение / контроллер

"def configure_permitted_parameters params = [: фамилия,: имя пользователя,: телефон,: страна,: город,: Дата рождения,:: веб-сайт,: facebook,: twitter,: аватар]

devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
devise_parameter_sanitizer.permit(:account_update, keys: [:name, :avatar])

end "

Когда я создаю пользователя, я вижу это в своем терминале:

"User id: 9, email: "felipe@meetrico.com", created_at: "2020-02-14 13:53:14", updated_at: "2020-02-14 13:53:14", sash_id: nil, level: 0, name: nil, lastname: nil, avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, avatar_updated_at: nil, username: nil, facebook: nil, twitter: nil, country: nil, region: nil, city: nil, born_date: nil, website: nil, admin: nil"

Пользователь создан, но информация равна нулю, поэтому, когда я go моя панель пользователя я вижу аватар: ноль ошибка.

¿Почему мое устройство не загружает информацию?

Спасибо за помощь!

1 Ответ

1 голос
/ 24 февраля 2020

Вы должны разрешить эти атрибуты не на контроллере приложения, а на контроллере пользователя, как это.

class UsersController < ApplicationController
  def create
    user = User.create!(user_params)
    session[:user_id] = user.id
    redirect_to root_path
  end

  private
    def user_params
      params.require(:user).permit(:username,
                                   :name,
                                   :lastname,
                                   :email,
                                   :password,
                                   :password_confirmation,
                                   :avatar,
                                   :country,
                                   :region,
                                   :city,
                                   :born_date,
                                   :facebook,
                                   :twitter,
                                   :website)
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...