2016-08-19 16 views
1

私のインボイスアプリケーションでは繭の宝石でネストされたフォームを作成しましたが、フォームはアプリケーションには表示されません。ビューレールではネストされたフォーム(繭の宝石)は表示されません

_form.html.erb - 部分骨格形態

<address> 
<%= f.fields_for :customer do |customer| %> 
<%= render 'customer_fields', f: customer %> 
<%= link_to_add_association 'Add customer',f, :customer %> 
<% end %> 
</address> 

_customer_fields.html.erb - 繭部分

<div class="nested-fields"> 
    <div class="form-group"> 
    <%= f.label 'Company Name' %><br/> 
    <%= f.text_field :company_name, placeholder: 'company name' %> 
    </div> 
    <div class="form-group"> 
    <%= f.label 'Address' %><br> 
    <%= f.text_field :address_line_1, placeholder: 'address' %> 
    </div> 
    <div class="form-group"> 
    <%= f.label 'Zip Code' %><br> 
    <%= f.text_field :zip_code %> 
    </div> 
    <%= link_to_remove_association "remove customer", f, class: 'btn btn-primary' %> 
</div> 

Invoice.rbモデル

class Invoice < ActiveRecord::Base 

    has_one :company 
    has_one :customer 
    has_many :products 


    accepts_nested_attributes_for :customer, reject_if: :all_blank, allow_destroy: true 
    validates :number, :currency, :date, :duedate, :btwtotal, :subtotal, :total, presence: true 

end 

customer.rbモデル

class Customer < ActiveRecord::Base 

    belongs_to :invoice 

end 

Invoices_controller.rb

class InvoicesController < ApplicationController 
    before_action :set_invoice, only: [:show, :edit, :update, :destroy] 

    # GET /invoices 
    # GET /invoices.json 
    def index 
    @invoices = Invoice.all 
    end 

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

    # GET /invoices/new 
    def new 
    @invoice = Invoice.new 
    end 

    # GET /invoices/1/edit 
    def edit 
    end 

    # POST /invoices 
    # POST /invoices.json 
    def create 
    @invoice = Invoice.new(invoice_params) 

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

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

    # DELETE /invoices/1 
    # DELETE /invoices/1.json 
    def destroy 
    @invoice.destroy 
    respond_to do |format| 
     format.html { redirect_to invoices_url, notice: 'Invoice was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

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

    # Never trust parameters from the scary internet, only allow the white list through. 
    def invoice_params 
     params.require(:invoice).permit(:number, :currency, :date, :duedate, :btwtotal, 
             :subtotal, :total, :footer, customers_attributes: [:id, :company_name, :address_line_1, :zip_code, :_destroy], 
             companies_attributes: [:id, :btw_number, :iban_number, :kvk_number, :company_name, :_destroy]) 
    end 
end 

誰もがこの問題を解決する方法を知っていますか?どんな助けでも大いに感謝されるでしょう!

答えて

2

はで、あなたの元のコードを見てみると、それは

<address> 
<%= f.object.build_customer if f.object.customer.nil? %> 
<%= f.fields_for :customer do |customer| %> 
<%= render 'customer_fields', f: customer %> 
<%= link_to_add_association 'Add customer',f, :customer %> 
<% end %> 
</address> 

Luissimo溶液中

が欠落していた編集customerスキーマ

rails generate migration AddInvoiceIdToCustomer invoice_id:integer 
rake db:migrate 
Invoice.first.build_customer 
+0

不明な属性 'invoice_id' for Customer ..多分私は関係を台無しにしましたか? – luissimo

+0

は部分的に '_customer_fields.html.erb' –

+0

を表示しています。これは既に私の元の投稿である2番目のコードブロックに追加されています。 – luissimo

0

にinvoice_id挿入しようとするあなたのあなたが持っているべきコントローラd:

def new 
    @invoice = Invoice.new 
    @invoice.customer.build 
end 
関連する問題