2011-07-27 12 views
5

से लिंक_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 

मैं अपने व्यवस्थापक/सौदों नियंत्रक में process_orders विधि कॉल करने के लिए अपने LINK_TO विधि किस तरह तैयार करना चाहिए?

मैंने सोचा था कि

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

की तरह कुछ जो मुझे इस यूआरएल

localhost:3000/access/deals/9 

मैं की तरह

localhost:3000/access/deals/9/process_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 (सौदा) होने के समाप्त हो गया, लेकिन मुझे @ केविन-त्ससी –

+0

पर एक नया मार्ग जोड़ना पड़ा, मैं सही रास्ते पर था! बस पूरी तरह से पीछे और गलत: पी – jaydel

उत्तर

4

आप निम्न में से 1 कर सकते हैं: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

इस उदाहरण देता है आप इस link_to:

का उपयोग कर सकते हैं

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

आपका LINK_TO कुछ इस तरह दिखेगा::

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

या

एक सदस्य मार्ग जोड़ें

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

आप एक विशिष्ट _path कि बहुत अच्छा उपयोग कर सकते हैं, लेकिन मैं जानता हूँ कि मैं स्थितियों में, जहां मैं और अधिक स्पष्ट नियंत्रण चाहता था में किया गया गया है।

रूबी यहाँ एपीआई:

एक कस्टम मार्ग बनाएँ::

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

तो

link_to "Profile", :controller => "profiles", :action => "show", :id => @profile 
1

यह अच्छे हो सकता है अगर आप के लिए process_orders विधि ले जाने के अपने OrdersController लेकिन यह आपका निर्णय है।

सिर्फ अपने routes.rb को यह मार्ग को जोड़ने के काम कर अपना कोड प्राप्त करने के लिए:

resources :deals do 
    get :process_orders 
    resources :orders 
end 

और <%= link_to("Process Orders", deal_process_orders(deal)) %> से कॉल करने की।

संबंधित मुद्दे