2017-04-18 6 views
1

Ich habe ein Login und eine Anmeldeseite. Ich möchte, dass nach dem Klicken auf die Login-oder Anmelde-Schaltfläche, der Benutzer zu einer anderen Ansicht umgeleitet wird, die eine Mikropost sein wird.Redirect-Schaltfläche zum Anzeigen in Ruby on Rails

Der Code für die Anmeldeseite lautet wie folgt. (wie im Formteil) -

<h2 class="text-center">Sign Up</h2> 
       <%= form_for(input_output_SignUp_url) do |f| %> 
       <%= f.label :first_name,"First name:" %> 
       <%= f.text_field :first_name %> 

       <%= f.label :last_name,"Last name:" %> 
       <%=f.text_field :last_name %> 

       <%= f.label :email,"Email:" %> 
       <%= f.email_field :email %> 

       <%= f.label :phone,"Phone no:"%> 
       <%= f.text_field :phone %> 

       <%= f.label :city,"City:" %> 
       <%= f.text_field :city %> 

       <%= f.label :addr_1,"Address 1:" %> 
       <%=f.text_field :addr_1 %> 

       <%= f.label :addr_2,"Address 2:" %> 
       <%= f.text_field :addr_2 %> 

       <%= f.label :state,"State:"%> 
       <%= f.text_field :state %> 

       <%= f.label :postal_code,"Postal Code:"%> 
       <%= f.text_field :postal_code %> 

       <%= f.label :password,"Password:"%> 
       <%= f.password_field :password %> 

       <%= f.label :password_confirmation, "Confirmation:" %> 
       <%= f.password_field :password_confirmation, class: 'form-control' %> 

       <%= button_to "View profile", input_output_micropost_path%> 
      <% end %> 

Jetzt funktioniert das nicht. Wenn ich auf die Schaltfläche klicken, zeigt es sich um eine fehler- Keine Route treffer [POST] "/ input_output/SignUp"

Die Routen-Datei wie folgt: -

root 'static_pages#home' 

    get 'static_pages/home' 
    get 'static_pages/genre' 
    get 'static_pages/accessories' 
    get 'static_pages/contactus' 
    get 'static_pages/aboutus' 

    get 'input_output/Login' 
    get 'input_output/SignUp' 
    get 'input_output/micropost' 

    get '/genre', to: 'static_pages#genre' 
    get '/accessories', to: 'static_pages#accessories' 
    get '/aboutus', to: 'static_pages#aboutus' 
    get 'contactus', to: 'static_pages#contactus' 

    get 'Home', to: 'static_pages#home' 
    get '/Login', to: 'input_output#Login' 
    get '/micropost', to: 'input_output#micropost' 
    get '/SignUp', to: 'input_output#SignUp' 
end 

Wie kann ich das machen Fehler weggehen?

Edit: - Als gefragt, ist dies das Ergebnis von Rake Routen /home/gauri/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0. 1/lib/active_support/xml_mini.rb: 51: Warnung: constant :: Fixnum ist veraltet

/home/gauri/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/ Active-5.0.1/lib/active_support/xml_mini.rb: 52: Warnung: konstante :: Bignum

veraltet

/home/gauri/.rbenv/versions/2.4.0/lib/ruby/gems/2.4. 0/gems/activesupport-5.0.1/lib/aktiver_support/core_ext/numerischer/conversions.rb: 138: warning: constant :: Fixnum ist veraltet

Rake abgebrochen!

ArgumentError: Fehlende: Controller-Schlüssel auf Routen Definition, überprüfen Sie bitte Ihre Routen.

/home/gauri/Lehre/CS/Ruby on Rails/ScholarShip/ScholarShip/config/routes.rb: 25: in `Block in '

/home/gauri/Lehre/CS/Ruby on Rails /ScholarShip/ScholarShip/config/routes.rb:1:in ` '

/home/gauri/Lehre/CS/Ruby on Rails/ScholarShip/ScholarShip/config/environment.rb: 5: in`'

Aufgaben: TOP => Routen => Umgebung

+0

In welcher Ansicht haben Sie verknüpfen möchten? Bitte führen Sie "Rake-Routen" aus und veröffentlichen Sie die Ausgabe. –

+0

Alle Ihre Routen sind "bekommen" Anfragen. Sie müssen eine Route hinzufügen, die die Daten aus dem Formular an einen Controller und eine Aktion "sendet", die Sie verarbeiten möchten. post 'input_output/SignUp' – bkunzi01

+0

@AlejandroMontilla Ich möchte es mit der Ansicht namens 'micropost' verknüpfen, die Teil des Controllers namens InputOutput ist, der auch die Anmeldeseite und die Anmeldeseite enthält. – sindhugauri

Antwort

0

Das ist ziemlich einfach. Statt

<%= button_to "View profile", input_output_micropost_path%> 

Sie sich, dass ein vorlegen

<%= f.submit "Sign up", class: "btn btn-default" %> 

Dann in Ihrem Controller in der Aktion erstellen eine Umleitung am Ende hinzuzufügen. So etwas wie diese

def create 
    @user = User.new(user_params) 
    if @user.save 
    redirect_to input_output_micropost_path, notice: 'User was successfully created.' 
    else 
    render :new 
    end 
end 

Edit: Sie benötigen RESTful Routen für Ihr Benutzermodell. Wenn Sie, dass unter dem input_output Namensraum setzen würde es so etwas wie diese

resources :input_outputs do 
    resources :users 
end 

sein ich die Rails Tutorial Buch von Michael Hardt empfehlen. Es zeigt, wie man so etwas sehr genau macht. Es ist ein Klassiker.

0

Der obere Teil Ihrer Routen falsch ist, muss der Weg zu einem Controller und die Aktion in der Steuerung zeigen, so sollten die Strecken etwas wie:

 
    root to: 'static_pages#home' 
    get '/genre', to: 'static_pages#genre' 
    get '/accessories', to: 'static_pages#accessories' 
    get '/aboutus', to: 'static_pages#aboutus' 
    get '/contactus', to: 'static_pages#contactus' 

    get '/Home', to: 'static_pages#home' 
    get '/Login', to: 'input_output#Login' 
    get '/micropost', to: 'input_output#micropost' 
    get '/SignUp', to: 'input_output#SignUp' 
    get '/Home', to: 'static_pages#home' 
    get '/Login', to: 'input_output#Login' 
    get '/micropost', to: 'input_output#micropost' 
    ################################################## 
    #### Action for the form is set as post, so signup 
    #### must be a post route 
    ################################################## 
    post '/SignUp', to: 'input_output#SignUp'