2017-06-07 2 views
0

Entschuldigung für die Frage noob.nicht umleiten zu einer benutzerdefinierten Aktion in Gerät Registrierungen Controller

Ich habe ein Benutzermodell und ich möchte zusätzliche Daten für das Benutzermodell nach einem Benutzer signs_in/signs_up speichern.

routes.rb

 devise_for :users, 
     path: '', 
     path_names: {sign_in: 'login', sign_out: 'logout',sign_up: 'signup'}, 
     controllers: { registrations: 'registrations 

     devise_scope :user do 
      match 'users/customer' => 'registrations#customer', :via => [:get], :as => 'customer' 
      match 'users/theme-selector' => 'registrations#theme_selector', :via => [:get], :as => 'theme-selector' 
     end 

registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController 

    protect_from_forgery :except => :create 

     def customer 
     @user = current_user 

    if @user 
     render :customer 
    # render :customer 
    # redirect_to controller: 'registations', action: 'theme_selector' 


     else 
      render file: 'public/404', status: 404, formats: [:html] 
     end 


    end 



    def theme_selector 
     @user = current_user 
      if @user 
       render :theme_selector 
      else 
       render file: 'public/404', status: 404, formats: [:html] 
      end 


     end 

     end 
     end 

customer.html.erb

<div class="container huge-top small-bottom""> 
    <div class="row large-top"> 
    <div class="col-md-8"> 
    <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> 

<div class="form-group"> 
    <%= f.label :"Contact Person" %> 
    <%= f.text_field :contact, class:"form-control" %> 
    </div> 
    <div class="form-group"> 
    <%= f.label :"Business Name" %> 
    <%= f.text_field :name, class:"form-control" %> 
    </div> 
    <div class="form-group"> 
    <%= f.label :phone %> 
    <%= f.text_field :phone, class:"form-control" %> 
    </div> 
    <div class="form-group"> 
    <%= f.label :email %> 
    <%= f.text_field :email, class:"form-control", required: true %> 
    </div> 
    <div class="form-group"> 
    <%= f.label :"Mailing Address" %> 
    <%= f.text_field :address, class:"form-control" %> 
    </div> 
    <div class="form-group"> 
    <%= f.label :"Do you currently have a domain?" %> 
    <%= f.text_area :domain, class:"form-control" %> 
    </div> 
    <div class="col-md-5"> 
    <!--%= f.submit '+', :name => "add_additional_fields" %--> 
    <span><%= f.submit 'Save', class: "btn btn-success" %></span> 
<span><!--%= link_to 'Back', customers_path, class: "btn btn-danger" %--></span> 
    </div> 

    </div> 
    </div> 
    <% end %> 

Die Schritte sind:

1.A Benutzer signs_up oder anmelden.

2. Die Benutzer wählt dann Kunde Taste, die customer.html.erb macht

3.Nach den Kunden Formular, dann ist es zu theme_selector Seite zu umleiten hat ein bestimmtes Thema zu wählen.

Ich kann das Benutzer-Modell aktualisieren, indem Sie die Daten innerhalb der customer.html.erb Formular .now ich auf die theme_selector Seite umleiten möchte und dann in der theme_id an die Nutzer übergeben model.If i verwenden redirect_to Controller: "Registrierungen", Aktion: "theme_selector" in der Kundenaktion, überspringt Kundenformular und theme_selector page.Wie kann ich es nach theme_selector nach dem Kundenformular umleiten.

theme_selector.html.erb

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> 
    <div class="row"> 
    <div class="col-md-4 col-sm-4 top-space"> 
     <!-- thumbnail--> 
     <div class="thumbnail image-height"> 
     <a href="http://theme1./" target="_blank"> 
      <div class="hovereffect"> 
      <img src="/assets/1.jpg" class="img-responsive theme" alt=""> 

       <div class="price-sale"><img src="/assets/new.png"></div> 

      </div> 
      <div class="caption"> 
      <h4>Click Here</h4> 
      <!--p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facere, soluta, eligendi doloribus sunt minus amet sit debitis repellat. Consectetur, culpa itaque odio similique suscipit</p--> 
      <p><button class="btn-update" role="button">View</button></p> 
      </div> 
     </a> 
     </div> 
     <div><%= f.radio_button :theme_id, 'theme-1' %> </div> 
    <!-- thumbnail end --> 
    </div> 
    <div class="col-md-4 col-sm-4 top-space"> 
     <!-- thumbnail--> 
     <div class="thumbnail image-height"> 
     <a href="http://theme2/" target="_blank"> 
      <div class="hovereffect"> 
      <img src="/assets/2.jpg" class="img-responsive theme" alt=""> 

       <div class="price-sale"><img src="/assets/new.png"></div> 

      </div> 
      <div class="caption"> 
      <h4>Click Here</h4> 
      <!--p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Facere, soluta, eligendi doloribus sunt minus amet sit debitis repellat. Consectetur, culpa itaque odio similique suscipit</p--> 
      <p><button class="btn-update" role="button">View</button></p> 
      </div> 
     </a> 
     </div> 
     <div><%= f.radio_button :theme_id, 'theme-1' %> </div> 
    <!-- thumbnail end --> 
    </div> 
    <div class="row"> 
<div class="col-md-12 top-space"><%= f.submit 'Submit', class: "btn-addmore" %></div> 
</div> 
<% end %> 

Jede Hilfe oder einen Vorschlag wird sehr geschätzt. Danke im Voraus.

+0

tut https://github.com/plataformatec/devise/blob/master/app/ Controller/devise/registrations_controller.rb # L112 für Sie arbeiten? – fanta

Antwort

0

Easy solution wird:

In Ihrem config/routes.rb

devise_for :users, 
    path: '', 
    path_names: {sign_in: 'login', sign_out: 'logout',sign_up: 'signup'}, 
    controllers: { registrations: 'registrations} 

    devise_scope :user do 
     get 'users/theme-selector' => 'registrations#theme_selector', :as => 'theme-selector' 

In Ihrem registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController 
    protected 

    def after_sign_up_path_for(resource) 
    'users/theme-selector' 
    end 
end 
+0

Michael, Danke für die schnelle Antwort. Ich entschuldige mich dafür, dass ich meine Frage nicht klargestellt habe. Eigentlich sind die Schritte: 1.A Benutzer signs_up oder signs_in. 2.Der Benutzer wählt die Schaltfläche des Kunden aus, die customer.html.erb rendert 3.Nach dem Absenden des Kundenformulars muss es zur theme_selector-Seite umgeleitet werden. – suresh

+0

@suresh Dieses Formular ist nicht sign_up/sign_in Formular? –

Verwandte Themen