2010-06-11 5 views
19

मैंने नियंत्रक, क्रिया, और पैराम पास करके कार्रवाई दिखाने के लिए रेल को रीडायरेक्ट करने का प्रयास किया। हालांकि, रेल पूरी तरह से कार्रवाई के नाम को अनदेखा करता है!रेल: redirect_to: नियंत्रक => 'टिप्स',: action => 'show',: id => @ tip.permalink

मैं क्या मिला http://mysite/controllername/paramId

तो मैं त्रुटि संदेश है ....

यहाँ कार्रवाई कोड मैं प्रयोग किया जाता है:

def update 
    @tip = current_user.tips.find(params[:id]) 
    @tip.attributes = params[:tip] 
    @tip.category_ids = params[:categories] 
    @tip.tag_with(params[:tags]) if params[:tags] 


    if @tip.save 
     flash[:notice] = 'Tip was successfully updated.' 
     redirect_to :controller=>'tips', :action => 'show', :id => @tip.permalink 
    else 
     render :action => 'edit' 
    end 
    end 

उत्तर

-3

यह हो सकता है एक अस्थायी "के आसपास मिलता है "। रेंडर का उपयोग करके, यह बहुत अच्छी तरह से काम करता है ....

if @tip.save 
    flash[:notice] = 'Tip was successfully updated.' 
    render :action => 'show', :id => @tip.permalink 
# redirect_to :controller=>'tips', :action => 'show', :id => @tip.permalink 
else 
    render :action => 'edit' 
end 
35

ढांचे से लड़ना क्यों?

redirect_to @tip 

और आप नोटिस विकल्प का उपयोग करके अपना कोड छोटा कर सकते हैं।

redirect_to @tip, :notice => 'Message here' 
+0

मुझे इसके बारे में पता नहीं था: redirect_to पर नोटिस शॉर्टकट। धन्यवाद, यह निश्चित रूप से थोड़ा सा समय बचाएगा। क्या फ्लैश के लिए समकक्ष है। अब और प्रस्तुत करें? – alternative

+3

बल, ल्यूक का प्रयोग करें – Rimian

7

यदि यह एक आरईएसटी संसाधन मार्ग है, तो रूटिंग वास्तव में सही है। /tips/id पर अनुरोध वास्तव में show कार्रवाई को कॉल करता है। जिस तरह से यह रूटिंग है, मेरा अनुमान है कि आपने इसे map.resources से रूट किया है, और यह सही है।

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