2016-10-10 1 views
0

Ich habe ein Gerüst genannt Kontakte erstellt und gab ihm die EinträgeWie kann ich ein Formular (Scaffold) mit ROR in eine Indexseite einbetten?

Name: string Telefon: string E-Mail: string

Ich mag das Formular sichtbar auf der Indexseite für die App-Nutzer zu senden.

Momentan befindet sich das leere Formular in localhost: 3000/contacts/new und nach der Einreichung zeigt die App die übermittelten Informationen an.

Erstens, wie kann ich das Formular in die Indexseite einbetten?

index.html.erb

<p id="notice"><%= notice %></p> 
 

 
<h1>Contacts</h1> 
 

 
<table> 
 
    <thead> 
 
    <tr> 
 
     <th>Name</th> 
 
     <th>Email</th> 
 
     <th>Phone</th> 
 
     <th>Message</th> 
 
     <th colspan="3"></th> 
 
    </tr> 
 
    </thead> 
 

 
    <tbody> 
 
    <% @contacts.each do |contact| %> 
 
     <tr> 
 
     <td><%= contact.name %></td> 
 
     <td><%= contact.email %></td> 
 
     <td><%= contact.phone %></td> 
 
     <td><%= contact.message %></td> 
 
     <td><%= link_to 'Show', contact %></td> 
 
     <td><%= link_to 'Edit', edit_contact_path(contact) %></td> 
 
     <td><%= link_to 'Destroy', contact, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
 
     </tr> 
 
    <% end %> 
 
    </tbody> 
 
</table> 
 

 
<br> 
 

 
<%= render 'contacts/form' %> 
 
<%= link_to "Apple", {:controller => 'contacts', :action => 'apple'} %> 
 
<%= link_to 'New Contact', new_contact_path %>

_form.html.erb

<%= form_for(contact) do |f| %> 
 
    <% if contact.errors.any? %> 
 
    <div id="error_explanation"> 
 
     <h2><%= pluralize(contact.errors.count, "error") %> prohibited this contact from being saved:</h2> 
 

 
     <ul> 
 
     <% contact.errors.full_messages.each do |message| %> 
 
     <li><%= message %></li> 
 
     <% end %> 
 
     </ul> 
 
    </div> 
 
    <% end %> 
 

 
    <div class="field"> 
 
    <%= f.label :name %> 
 
    <%= f.text_field :name %> 
 
    </div> 
 

 
    <div class="field"> 
 
    <%= f.label :email %> 
 
    <%= f.text_field :email %> 
 
    </div> 
 

 
    <div class="field"> 
 
    <%= f.label :phone %> 
 
    <%= f.text_field :phone %> 
 
    </div> 
 

 
    <div class="field"> 
 
    <%= f.label :message %> 
 
    <%= f.text_area :message %> 
 
    </div> 
 

 
    <div class="actions"> 
 
    <%= f.submit %> 
 
    </div> 
 
<% end %>

contacts_controller.rb

class ContactsController < ApplicationController 
 
    before_action :set_contact, only: [:show, :edit, :update, :destroy] 
 

 
    # GET /contacts 
 
    # GET /contacts.json 
 
    def index 
 
    @contacts = Contact.all 
 
    
 
    end 
 

 
    # GET /contacts/1 
 
    # GET /contacts/1.json 
 
    def show 
 
    end 
 

 
    # GET /contacts/new 
 
    def new 
 
    @contact = Contact.new 
 
    end 
 

 
    # GET /contacts/1/edit 
 
    def edit 
 
    end 
 

 
    # POST /contacts 
 
    # POST /contacts.json 
 
    def create 
 
    @contact = Contact.new(contact_params) 
 

 
    respond_to do |format| 
 
     if @contact.save 
 
     format.html { redirect_to @root_path, notice: 'Contact was successfully created.' } 
 
     format.json { render :show, status: :created, location: @contact } 
 
     else 
 
     format.html { render :new } 
 
     format.json { render json: @contact.errors, status: :unprocessable_entity } 
 
     end 
 
    end 
 
    end 
 

 
    # PATCH/PUT /contacts/1 
 
    # PATCH/PUT /contacts/1.json 
 
    def update 
 
    respond_to do |format| 
 
     if @contact.update(contact_params) 
 
     format.html { redirect_to @contact, notice: 'Contact was successfully updated.' } 
 
     format.json { render :show, status: :ok, location: @contact } 
 
     else 
 
     format.html { render :edit } 
 
     format.json { render json: @contact.errors, status: :unprocessable_entity } 
 
     end 
 
    end 
 
    end 
 

 
    # DELETE /contacts/1 
 
    # DELETE /contacts/1.json 
 
    def destroy 
 
    @contact.destroy 
 
    respond_to do |format| 
 
     format.html { redirect_to contacts_url, notice: 'Contact was successfully destroyed.' } 
 
     format.json { head :no_content } 
 
    end 
 
    end 
 

 
    private 
 
    # Use callbacks to share common setup or constraints between actions. 
 
    def set_contact 
 
     @contact = Contact.find(params[:id]) 
 
    end 
 

 
    # Never trust parameters from the scary internet, only allow the white list through. 
 
    def contact_params 
 
     params.require(:contact).permit(:name, :email, :phone, :message) 
 
    end 
 
end

Antwort

0

Unter der Annahme, dass das Formular als Teil gespeichert Sie <% = render 'Form' %> auf die Index-Seite hinzufügen können. Wenn "Formular" durch den tatsächlichen Formularpfad ersetzt wird.

+0

Sein geben einen Fehler - undefiniert lokale Variable oder Methode 'Kontakt‘ –

0

Try Nach

<%= render partial: "contacts/form", locals: { contact: @contacts } %> 
Verwandte Themen