1

目前,我有一个公司表,每个公司都有一个表来存储他们的资金数据,其中包含日期和货币价值,我可以在 rails 控制台中创建新数据

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>}

我从 db 创建资金:

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) %>

我的资金控制器:

   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..

我的模型/company.rb:

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

我的模型/fund.rb:

class Fund < ActiveRecord::Base
  belongs_to :company
end

我的路线.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 回答