在我的路线中,我有:
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]), ....
但那给了我
没有路线匹配 {:控制器=&gt; “中转让”, :动作=&gt; “中接受”}
在rake路线中存在这样的路线。
感谢任何帮助。
答案 0 :(得分:0)
在您的路由中,使用Rails为路由提供的宏应该会有更好的结果。不要使用旧式路线图,请尝试:
resources :accounts do
resources :transfers do
put 'accept', :on => :member
end
end
路由器在RESTful路由方面非常聪明,但是当你开始手动映射事物时,它会变得混乱......特别是当你在嵌套的RESTful路由中进行时。