2016-10-10 17 views
0

我創建了一個名爲腳手架聯繫並賦予它的條目如何使用ROR將表單(腳手架)嵌入到索引頁中?

名稱:串電話:字符串email:字符串

我要爲應用程序用戶提交的索引頁的形式顯示。

目前空白表格位於localhost:3000/contacts/new 然後提交後,應用程序顯示提交的信息。

首先,我如何將表單嵌入索引頁?

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

回答

0

假設你的形式保存爲一個部分,你可以添加 <%=渲染「形式」%>到索引頁面。將'表單'替換爲實際的表單路徑。

+0

它給了一個錯誤 - 未定義的局部變量或方法'接觸」 –

0

嘗試以下

<%= render partial: "contacts/form", locals: { contact: @contacts } %> 
相關問題