2011-07-27 113 views
5

我的應用程序具有有訂單的交易。在我的管理區域中,我希望能夠手動處理訂單。從視圖中調用link_to中的控制器方法

在我訪問/交易查看

<%= link_to "Process Orders", "Not sure what I put here?" %> 

在我訪問/ deals_controller

def process_orders 
    @deals = Deal.find(params[:id] 
    @orders = @deals.orders.where("state" == ?, "pending") 

    @orders.each do |order| 
    #order processing code here 
    end 
end 

我應該如何架構我的link_to方法調用process_orders方法在我的管理/交易控制器?

我覺得像

<%= link_to "Process Orders", access_deal_path(deal) %> 

這給我下面的網址

localhost:3000/access/deals/9 

我怎麼有點像

localhost:3000/access/deals/9/process_orders 

我也願意聽取建議的移動processing_orders方法來建模或幫助,如果這是一個更好的方法做到這一點。

我的路線文件摘錄。

resources :deals do 
    resources :orders 
    end 

    namespace "access" do 
    resources :deals, :podcasts, :pages, :messages 
    end 
+0

它會是access_deals_process_orders_path? – jaydel

+0

它最終成爲process_orders_access_deal_path(成交),但我不得不添加一條新路線感謝@ Kevin-Tsoi –

+0

我在正確的軌道上!完全倒退和錯誤:P – jaydel

回答

4

你可以做以下的1:

創建自定義路線:

match 'access/deals/:id/process_orders' => 'access/deals#process_orders', :as => 'access_deal' 

然後你可以使用這個link_to:

<%= link_to "Process Orders", access_deal_path(deal) %> 

OR

添加成員路線:

namespace "access" do 
    resources :deals do 
     member do 
      get :process_orders 
     end 
    end 
end 

你的link_to會是這個樣子:

<%= link_to "Process Orders", process_orders_access_deal_path(deal) %> 
1

如果移動process_orders方法這將是更好的OrdersController但這是你的決定。

爲了讓你的代碼的工作只是這條路線添加到您的routes.rb

resources :deals do 
    get :process_orders 
    resources :orders 
end 

<%= link_to("Process Orders", deal_process_orders(deal)) %>調用它。

相關問題