2011-06-21 23 views
0

在我的路線,我有:路由問題 「每做」 結構 - 的Rails 3

resources :accounts do 
    resources :transfers 
     put '/transfers/:id(.:format)' => 'transfers#accept' 
    end 

在我的模型:

class Transfer 
    include DataMapper::Resource 
    belongs_to :account 
    belongs_to :alias_from, "Alias" 
    belongs_to :alias_to, "Alias" 

class Account 
    include DataMapper::Resource 
    belongs_to :user 
    has n, :transfers 

筆者認爲:

<% @transfers_in.each do |income|%> 
    Amount: <%= income.amount%> <%= income.account.currency%> 
     <% form_for ([???, income]), :as => :transfer, :url => {:controller=>'transfers', :action => 'accept'} do |f|%> 
     Choose the account <%= f.collection_select :account, @accounts, :name, :name %> 
     <%= f.submit :value => "Accept" %> 
     <% end %> 
<% end %> 

如果這裏有@transfers_in被其他關聯調用,我應該如何在這裏調用這個帳戶?

@aliases = @owner.aliases.all() 
@transfers_in = @aliases.transfers_in.all() 

我已經試過類似

<% @acc = Account.all()%> 
      <% @trs = @acc.transfers.get(:id => income.account)%> 
      <% form_for ([@trs, income]), .... 

但是這給了我

沒有路由匹配 {:控制器=> 「轉讓」, :動作=>「接受「}

在這種路線存在的耙路線中。

感謝任何幫助。

回答

0

在您的路由中,您應該使用Rails提供的路由宏來獲得更好的結果。相反,做舊風格的路線圖,請嘗試:

resources :accounts do 
    resources :transfers do 
    put 'accept', :on => :member 
    end 
end 

路由器是真正聰明的,當談到REST風格的路線,但是當你開始手工繪製的東西,它可能會不知所措......尤其當你」在嵌套的RESTful路由中重新執行它。