1

現在、私は会社のテーブルを持っており、各会社には資金調達データを日付と金額で保存するテーブルがあり、レールコンソールで新しいデータを作成できます

Fund.create :date_of_record=>"2010-01-02", :company_id=>"1", :money=>"2003"

会社のページ (例: company_id=1) に移動すると、コンソールから入力したデータを表示し、編集、更新できますが、クリックして新しい資金データを追加すると、取得しています

No route matches {:controller=>"funds", :company_id=>#<Fund id: nil, date_of_record: nil, company_id: 1, money: nil, created_at: nil, updated_at: nil>}

私はデータベースから資金を作成します:

class CreateFunds < ActiveRecord::Migration
  def change
    create_table :funds do |t|
      t.datetime :date_of_record
      t.references :company
      t.integer :money

      t.timestamps
    end
    add_index :funds, :company_id
  end
end

私の資金/new.html:

<% form_for ([@company, @fund]) do |f| %>
    <p>
    <%= f.label :date_of_record %><br />
    <%= f.text_field :date_of_record %>
    </p>
    <p>
        <%= f.label :money %><br />
        <%= f.text_field :money %>
    </p>
    <p>
        <%= f.submit "Create" %>
    </p>
    <% end %>
<%= link_to 'Back', company_funds_path(@fund) %>

私のfunds_controller:

   def new
     @company = Company.find(params[:company_id])
     @fund = @company.funds.build
   end

   def create
     @company = Company.find(params[:company_id])

     @fund = @company.funds.build(params[:fund])
     if @fund.save
       redirect_to company_fund_url(@company, @fund)
     else
       render :action => "new"
     end
   end
etc..

私のモデル/会社.rb:

class Company < ActiveRecord::Base
  has_many :empnumbers
  has_many :funds 
end

私のモデル/fund.rb:

class Fund < ActiveRecord::Base
  belongs_to :company
end

私のroutes.rb:

  resources :companies do
    resources :funds
  end

助けてくれてありがとう!!

4

2 に答える 2

1
= link_to 'Back', company_funds_path(@fund)

おそらくあるはずです

= link_to 'Back', company_funds_path(@company)
# => /companies/:company_id/funds
于 2011-09-21T15:46:11.200 に答える
0

正しい。特定の会社に資金を追加する場合も同じことを行う必要があります。@company を new_company_fund_path(@company) に渡します

<%= link_to 'add fund', new_company_fund_path(@company) %>
于 2011-09-21T16:02:14.370 に答える