Ruby Rails Routing error - PullRequest
       11

Ruby Rails Routing error

1 голос
/ 21 сентября 2011

В настоящее время у меня есть таблица компаний, и у каждой компании есть таблица для хранения данных о финансировании с указанием даты и денежной стоимости. Я могу создавать новые данные в консоли 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

Спасибо за помощь!!

Ответы [ 2 ]

1 голос
/ 21 сентября 2011
= link_to 'Back', company_funds_path(@fund)

Вероятно, должно быть

= link_to 'Back', company_funds_path(@company)
# => /companies/:company_id/funds
0 голосов
/ 21 сентября 2011

Правильно.Вы должны сделать то же самое для добавления средств в данную компанию.Вы передаете @company в new_company_fund_path (@company)

<%= link_to 'add fund', new_company_fund_path(@company) %>
...