Rails 5: Attachinary Error после загрузки изображения - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть приложение в рельсах на героку с использованием облачного кода для изображений.Для загрузки этих изображений я использую Attachinary gem .Проблема в том, что изображения отправляются на облачный сервер, но не сохраняются в БД.Моя форма использует remote: true для отправки данных, и консоль возвращает это:

enter image description here

Completed 406 Not Acceptable in 4978ms (ActiveRecord: 335.3ms)

ActionController::UnknownFormat - PerfilController#update is missing a template for this request format and variant.


request.formats: ["text/javascript", "application/ecmascript", "application/x-ecmascript", "*/*"]
request.variant: []:

Perfil Controller

class PerfilController < SuperSiteController
  before_action :set_user, only: [:show, :edit, :update, :destroy]
  # skip_before_action :verify_authenticity_token #evita erro 422
  skip_before_action :verify_authenticity_token, only: [:update]

  def index
     @usuarios = User.all
  end

    def show
    @q = Page.ransack(params[:q])
  end

  def new
    @usuario = User.new
    @q = Page.ransack(params[:q])
  end

  def edit
    @q = Page.ransack(params[:q])
    @usuario = User.find(current_user.id)
  end

  def create
    @usuario = User.new(user_params)  
    respond_to do |format|
      if @usuario.save


        format.html { redirect_to "/#cadastro", notice: 'Usuário cadastrado com sucesso' }
        format.json { render :show, status: :created, location: @marca }
        # format.js
      else
        format.html { redirect_to "/#cadastro", notice: 'Este email já está cadastrado' }
        format.json# { render json: @usuario.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    respond_to do |format|
      if @usuario.update(user_params)

        if @usuario.nome_cartao.present? && @usuario.cartao.present? && @usuario.validade.present? &&
            @usuario.cvv.present?

            Iugu.api_key = "xxxxxxxxxxxxxxxxxxxxxxxxx"



                  charge = Iugu::Charge.create({
                    "email" => @usuario.email,
                    items: [{
                         description:  "Cadastro Cartão",
                         quantity: 1,
                         price_cents:  0
                     },{
                         description: "Desconto",
                         quantity: 1,
                         price_cents: "0"
                     }],
                      payer: {
                        # cpf_cnpj: current_user,
                        name: @usuario.nome_cartao,
                        phone: @usuario.wpp,
                        email: @usuario.email,
                        address: {
                            street: @usuario.rua,
                            # city: current_user.cidade,
                            # state: current_user.estado,
                            country: "Brasil",
                            zip_code: @usuario.cep
                        }
                      }
                    }
                  )

                    customer = Iugu::Customer.create(email: @usuario.email, name: @usuario.nome_cartao)
                    Iugu::Subscription.create(plan_identifier: 'cadastro_cartao', customer_id: customer.id)

                    puts customer.invoices

        end



        # format.html { redirect_to edit_perfil_path, notice: 'Usuário atualizado com sucesso' }
        format.html 
        format.json { render json: @usuario }
        format.js
      else
        format.html { render :edit }
        format.json { render json: @usuario.errors, status: :unprocessable_entity }
        format.js
      end
    end
  end

  def destroy
    @usuario.destroy
    respond_to do |format|
      format.html { redirect_to root_url, notice: 'Usuário excluído com sucesso' }
      format.json { head :no_content }
    end
  end

  def solicitacao
    @user = current_user
    NovaMandalaMailer.solicitacao(@user).deliver
    redirect_to edit_perfil_path(current_user.id), notice: "Obrigado! Sua solicitação foi enviada."
  end


  def enviar_email_contato
    @nome = params[:nome]
    @email = params[:email]
    @assunto = params[:assunto]
    @mensagem = params[:mensagem]

    ContatoMailer.enviar_email_contato(@nome, @email, @assunto, @mensagem).deliver
    redirect_to contato_path, notice: "Sua mensagem foi enviada, entraremos em contato em breve."
  end


  def confirmacao_cadastro
    @nome = current_user.name if current_user.name.present?
    @email = current_user.email 

    ConfirmacaoMailer.confirmacao_cadastro(@nome, @email).deliver
  end


  private
# Use callbacks to share common setup or constraints between actions.
  def set_user
    @usuario = User.friendly.find(params[:id])
  end

  # Never trust parameters from the scary internet, only allow the white list through.
  def user_params
    params.require(:user).permit(:last_sign_in_ip, :last_sign_in_ip, :current_sign_in_ip, :last_sign_in_at,
                                 :current_sign_in_at, :sign_in_count, :remember_created_at, 
                                 :email, :encrypted_password, :password, :reset_password_token,
                                 :name, :wpp, :altura, :image1, :image2, :image3, :image4, :image5, 
                   :o_que_falta, :tipo_roupa, :marcas, :instagram, :nao_gosta, 
                   :cor1, :cor2, :cor3, :cor4, :cor5, :obs_stylist, :nascimento, 
                   :profissao, :cep, :rua, :numero, :complemento, :cartao, :peso,
                   :nome_cartao, :validade, :cvv, :image, :avatar, :slug,
                   corpo:[], como_quer_receber:[], cores:[], ficou_sabendo:[],
                   tamanho_cima:[], tamanho_baixo:[], photos:[], opcoes_pecas:[])
  end
end

Форма

 <%= form_for @usuario, :url => url_for(:controller => 'perfil', :action => 'update'), :html => {remote: true, class: 'perfilForm' }  do |f| %>


  <section class="boxPerfil">
    <section class="row">
      <section class="column large-12 medium-12 small-12 circuloPerfil">



        <div class="grupo1Fotos">
          <label class="foto1 foto uploadFotos">
            <%= image_tag 'site/icons/faixa.png', class: "adesivo" %>
            <!-- <img src="https://picsum.photos/95/115" alt=""> -->
            <% if @usuario.image1? %>
              <%= cl_image_tag(@usuario.image1.path, { size: '95x115', crop: :thumb }) %>
            <% else %>
              <p>Cadastre uma imagem aqui</p>
            <% end %>
            <%= f.attachinary_file_field :image1 %>
          </label>
          <!-- END FOTO 1 -->

          <label class="foto2 foto uploadFotos">
            <%= image_tag 'site/icons/faixa.png', class: "adesivo" %>
            <!-- <img src="https://picsum.photos/138/177" alt=""> -->
            <% if @usuario.image2? %>
              <%= cl_image_tag(@usuario.image2.path, { size: '138x177', crop: :thumb }) %>
            <% else %>
              <p>Cadastre uma imagem aqui</p>
            <% end %>
            <%= f.attachinary_file_field :image2 %>
          </label>
          <!-- END FOTO 2 -->
        </div>
        <!-- GRUPO FOTOS -->


        <label class="foto3 foto uploadFotos">
          <%= image_tag 'site/icons/faixa.png', class: "adesivo" %>
          <% if @usuario.image3? %>
            <%= cl_image_tag(@usuario.image3.path, { size: '130x200', crop: :thumb }) %>
          <% else %>
            <p>Cadastre uma imagem aqui</p>
          <% end %>
          <%= f.attachinary_file_field :image3 %>
          <input type="file">
        </label>
        <!-- END FOTO 3 -->

        <label class="foto4 foto uploadFotos">
          <%= image_tag 'site/icons/faixa.png', class: "adesivo" %>
          <% if @usuario.image4? %>
            <%= cl_image_tag(@usuario.image4.path, { size: '120x160', crop: :thumb }) %>
          <% else %>
            <p>Cadastre uma imagem aqui</p>
          <% end %>
          <%= f.attachinary_file_field :image4 %>
        </label>
        <!-- END FOTO 4 -->

        <label class="foto5 foto uploadFotos">
          <%= image_tag 'site/icons/faixa.png', class: "adesivo" %>
          <% if @usuario.image5? %>
            <%= cl_image_tag(@usuario.image5.path, { size: '110x188', crop: :thumb }) %>
          <% else %>
            <p>Cadastre uma imagem aqui</p>
          <% end %>
          <%= f.attachinary_file_field :image5 %>
        </label>


        <section class="boxInfosUser">
          <div class="sobre">
            <h1><%= @usuario.name if @usuario.name.present? %></h1>
            <p><%= @usuario.obs_stylist if @usuario.obs_stylist.present? %></p>
          </div>


          <div class="cores coresPerfil">
            <h3>CORES:</h3>
            <% n2 = 0 %>
            <%= f.collection_check_boxes(:cores, User::CORES, :first, :last) do |b| %>
                <%= b.label do %>
                  <% n2 +=1 %>
                  <%= b.check_box %>
                  <div class="paleta paleta<%= n2 %>">
                    <div class="cor cor1"></div>
                    <div class="cor cor2"></div>
                    <div class="cor cor3"></div>
                    <div class="cor cor4"></div>
                  </div>
                <% end %>
            <% end %>

            <h3>MARCAS:</h3>
            <p><%= @usuario.marcas if @usuario.marcas.present? %></p>
          </div>

          <div class="informacoes">
            <h2>TAMANHO:</h2>
            <p>parte de cima: 
              <%= 
                if @usuario.tamanho_cima.present? 
                  @usuario.tamanho_cima.drop(1).map {|str| "\"#{str}\""}.join(', ').gsub(/"|^ +| $+|\n/i,'').to_s
                end
              %>
            </p>
            <p>parte de baixo:
              <%= 
                if @usuario.tamanho_baixo.present? 
                  @usuario.tamanho_baixo.drop(1).map {|str| "\"#{str}\""}.join(', ').gsub(/"|^ +| $+|\n/i,'').to_s
                end
              %>
            </p>

            <h2>ALTURA E PESO:</h2>
            <p><%= @usuario.altura if @usuario.altura.present? %> | <%= @usuario.peso if @usuario.peso.present? %></p>

            <h2>TIPO DE CORPO</h2>
            <p>
              <%= 
                if @usuario.corpo.present? 
                  @usuario.corpo.drop(1).map {|str| "\"#{str}\""}.join(', ').gsub(/"|^ +| $+|\n/i,'').to_s
                end
              %>
            </p>

            <!-- <h2>ESCOLHA DAS PEÇAS</h2>
            <p><%#= @usuario.tipo_peca if @usuario.tipo_peca.present? %></p> -->
          </div>




          <div class="avatar">
            <label class="foto6 foto uploadFotos">
              <% if @usuario.avatar? %>
                <%= cl_image_tag(@usuario.avatar.path, { size: '175x262', crop: :thumb, class: "avatar" }) %>
              <% else %>
                <p>Cadastre sua foto aqui</p>
              <% end %>
              <%= f.attachinary_file_field :avatar %>
            </label>


            <%= image_tag "site/thumbs/foto.png" %>
          </div>

          <div class="descricao">
            <div>
              <p><%= @usuario.instagram if @usuario.instagram.present? %> | nascimento: <%= @usuario.nascimento if @usuario.nascimento.present? %>, <%= @usuario.profissao if @usuario.profissao.present? %></p>
            </div>

            <!-- <div class="formaCorpo">
            <%= image_tag "site/icons/triagulo.png" %>
              <p>(alterar)</p>
            </div> -->
    <%#= f.submit "SALVAR FOTOS" %>

          </div>
        </section>

        </section>
      </section>
  </section>
  <!-- ================================== END BOX -->
<% end %>

Кто-то уже получил эту ошибку раньше?

Спасибо!

...