2011-01-25 7 views
6

मैं के रूप में वर्णित 3 एप्लिकेशन मेरी रेल में "मैत्री" लागू करने के लिए कोशिश कर रहा हूँ Railscast 163:Self Referential Assosicationरेल 3: ": विधि =>: पोस्ट" काम नहीं करता है ... 'प्राप्त' हो रहा है जब यह होना चाहिए 'POST'

मेरे पास वर्णित सबकुछ स्थापित है। मैं एक मूल उपयोगकर्ता मॉडल का उपयोग कर रहा हूं जो ऑथलॉगिक के साथ लॉग इन करता है जो ठीक काम करता है। लेकिन जब मैं नीचे दिए गए लिंक का उपयोग कर एक दोस्त को जोड़ने का प्रयास:

<% for user in @users %> 
<%=h user.username %> 
    <%= link_to "Add Friend", friendships_path(:friend_id => user), :method => :post %>  
<% end %> 

मैं http://localhost:3000/friendships?friend_id=2 को रीडायरेक्ट और एक अज्ञात कार्रवाई कार्रवाई 'सूचकांक' मिलता है और आगे कोई स्पष्टीकरण के साथ FriendshipsController त्रुटि के लिए नहीं पाया जा सका। यह विशेष रूप से अजीब है क्योंकि मेरे हार्ड उपयोगकर्ता को मेरे वर्तमान उपयोगकर्ता के लिए "उपयोगकर्ता # शो" विधि पर रीडायरेक्ट किया गया है (यानी दोस्त जोड़ने के बाद प्रोफ़ाइल पर रीडायरेक्ट करें)।

यदि यह मदद करता है, यहाँ मेरी "दोस्ती # बनाने के" विधि है:

def create 
    @friendship = current_user.friendships.build(:friend_id => params[:friend_id]) 
    if @friendship.save 
    flash[:notice] = "Added friend." 
    redirect_to :controller => 'users', :action => 'show', :id =>'current_user' 
    else 
    flash[:notice] = "Unable to add friend." 
    redirect_to :controller => 'users', :action => 'show', :id =>'current_user' 
    end 
end 

किसी भी विचार यह है कि क्या कारण हो सकता है? मैं किसी को यहाँ एक ऐसी ही समस्या हो रही पाया लेकिन मुझे नहीं एक निश्चित ठीक मिल सकता है: आपकी मदद के लिए अग्रिम में Rails 3 and Friendship Models

धन्यवाद!

~ दान

+0

क्या आप एचटीएमएल पोस्ट कर सकते हैं कि उपरोक्त लिंक_ओ उत्पन्न होता है (यानी वेब आउटपुट का व्यू-स्रोत)? –

+0

https://gist.github.com/796758 जेनरेट आउटपुट का पूरा स्रोत है। – thoughtpunch

+0

क्या 'rails.js 'सहायक फ़ाइल है (जो वास्तव में लागू होती है' विधि:>: post') को आपके HTML से संदर्भित किया जा रहा है? – yfeldblum

उत्तर

10

मुझे लगता है कि LINK_TO के रूप में यह भले ही आप डाल एचटीएमएल लिंक के साथ पैदा कर रही है क्वेरी स्ट्रिंग में तर्क रख: विधि =>: पोस्ट अगर js अक्षम है।

आप जावास्क्रिप्ट के साथ एक पोस्ट simulte सकता है: onclik घटना।

aniway, विधि के साथ एक LINK_TO का उपयोग करें: पोस्ट आम तौर पर एक बुरा विचार है। रेल में आप बटन_to सहायक के लिए इसका उपयोग कर सकते हैं और इसे एक लिंक की तरह स्टाइल कर सकते हैं।

संपादित करें: (गतिशील HTML फ़ॉर्म बनाने के पोस्ट

और तुरंत प्रपत्र सबमिट:
Rails3 डॉक में लगता है कि LINK_TO button_to का एक ही behaviur अनुकरण करने के लिए है जब पैरामीटर वाला कहा जाता है: विधि =>)।

लेकिन जावास्क्रिप्ट सक्षम होने पर भी रेल 3.0.3 में मेरे लिए यह सच नहीं है। मैं जांच करूंगा।

वैसे भी आपको किसी भी चीज के लिए बटन और फॉर्म का उपयोग करना चाहिए जो प्राप्त नहीं है; हाइपरलिंक जानबूझकर के अलावा अन्य तरीकों के लिए अनुमति नहीं देते प्राप्त

EDIT2: ठीक है, rails3 एक इनलाइन प्रपत्र का निर्माण नहीं करतीं के लिए लिंक के माध्यम से पोस्ट अनुरोध को दिखाने। Rails3 में जावास्क्रिप्ट फ़ंक्शन के माध्यम से इसे मैनिपुलेट करने के लिए टैग में एक डेटा-विधि = पोस्ट विशेषता जोड़ दी जाती है। जेएस अक्षम होने पर अनुरोध इस तरह से कॉल प्राप्त करने में अनुरोधपूर्वक गिरावट आती है।

+0

यह बहुत अच्छा काम करता है! कोई विचार क्यों link_to विधि प्रोग्रामिंग दृष्टिकोण से बटन_to से भिन्न रूप से कार्य करता है? दृश्यों के पीछे क्या चल रहा है? – thoughtpunch

4

यह एक देर से जवाब है, लेकिन यह इस समस्या का समाधान है (कम से कम यह मेरे लिए काम करता है):

<%= link_to "Add Friend", {:controller => :friendships, :action => :create, :friend_id => user_id }, :method => :post %>  

मैं जानता हूँ कि यह आपकी समस्या के लिए लंबे समय से अपेक्षित है, लेकिन यह मदद मिल सकती है किसी को :)

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