Domanda

Ci sono domande simili ma sono andato su di loro e nessuno di loro ha applicato.

Sto usando Devise e Devieni inviti . Rails 3.2.6.

La cosa complicata è che ho due modelli di utenti. Utente e un'installazione di ereditariele singola tavola in cui l'artista eredita dall'utente. Ho due controller di inviti per consentire l'invio di inviti separatamente sia agli utenti che agli artisti.

Il problema in questo momento è che gli artisti non sono in grado di accettare i loro inviti. Sulla forma inviare di aggiornare la password, ottengono un errore inaccettabile 406.

Codice rilevante:

Routing:

  devise_for :users,
             :class_name => User,
             :controllers => { :invitations => 'user/invitations' }

  namespace :artist do
    # Special route for devise, artists invitation
    devise_scope :user do
      resource :invitation, :controller => :invitations, :only => [:create, :new, :update] do
        get :accept, :action => :edit
      end
    end
  end
.

Controller Invitazioni Artist

class Artist::InvitationsController < Devise::InvitationsController
  respond_to :html

  # PUT /resource/invitation
  def update
    self.resource = Artist.accept_invitation!(params[resource_name])

    if resource.errors.empty?
      resource.pending
      flash[:notice] = "Welcome, complete your artist agreement to get started"
      sign_in(:user, resource)
      respond_with resource, :location => after_accept_path_for(resource)
    else
      respond_with_navigational(resource){ render :edit }
    end
  end
end
.

Descrizione del modulo. modifica.html.erb.

<%= form_for resource, :as => resource_name, :url => artist_invitation_path(resource_name), :html => { :method => :put } do |f| %>
  <%= f.hidden_field :invitation_token %>
  <%= f.label :password, class: 'control-label' %>
  <%= f.password_field :password, :placeholder => 'Enter a password' %>
  <%= f.label :password_confirmation, class: 'control-label' %>
  <%= f.password_field :password_confirmation, :placeholder => 'Confirm your password' %>
  <%= f.submit "Set my password", :'data-disable-with' => "Hang on..." %>
<% end %>
.

Accetta intestazioni

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:236
Content-Type:application/x-www-form-urlencoded
.

restituisce

Request URL:http://localhost:3000/artist/invitation.user
Request Method:POST
Status Code:406 Not Acceptable
.

Posso vedere che qualcosa nel formato deve essere spento a causa della risposta che aggiunge in quel .er fino alla fine. Non posso per la vita di me vedo perché o dove sta accadendo. Per favore fatemi sapere se ci sono informazioni che ho lasciato fuori che potrebbero aiutare.

È stato utile?

Soluzione

ha capito, infine.

La chiave è sembrare precisamente a quale risorsa_name ti sta dando durante il modulo e le azioni del controller.Nel mio caso ha continuato a fallback a: utente quando è necessario essere: artista e come frost menzionato in un commento, il modulo generato HTML cambia notevolmente se si presta attenzione a dove viene utilizzato Risorsa_Name.L'azione di aggiornamento nel controller doveva essere sovrascritta a utilizzare: artista direttamente e il form_for necessario per essere modificato per rimuovere risorse_name da argomenti e: come argomento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top