2011-11-03 16 views
6

से लिंक करने के लिए गुम मेजबान मैं रेल 3.1.1 विकसित कर रहा हूं।
मॉडल में url_helpers सहित मॉडल को सहेजने पर एक ArgumentError का कारण बनता है।में Rails.application.routes.url_helpers शामिल हैं ArgumentError

class Medium < ActiveRecord::Base 
    include Rails.application.routes.url_helpers 

    . 
    . 
end 

class MediaController < ApplicationController 

    def create 
    @medium = Medium.new(params[:medium]) 
    @media.save # => cause ArgumentError 
    end 
end 

ArgumentError (से जोड़ने के लिए मेजबान लापता प्रदान करें: मेजबान पैरामीटर, सेट default_url_options [: मेजबान], या सेट: only_path सच करने के लिए):

एक अन्य मॉडल जो भी शामिल url_helper नहीं करता है त्रुटि नहीं है।
क्या गलत है?
अग्रिम धन्यवाद।

उत्तर

-2

यह त्रुटि आम तौर पर तब होती है जब हम किसी भी यूआरएल हेल्पर्स को उन स्थानों पर उपयोगकर्ता का उपयोग करने का प्रयास करते हैं जहां इसका उपयोग नहीं किया जाना चाहिए। उदाहरण के लिए यदि मैं reset_password_url(@user) का उपयोग कर मेलर क्लास एक्शन से पासवर्ड रिकॉर्ड यूआरएल उत्पन्न करने का प्रयास करता हूं, तो मुझे एक ही त्रुटि मिलती है।

कृपया सुनिश्चित करें कि आप अपने मॉडल वर्ग के भीतर किसी भी _path या _url विधियों का उपयोग नहीं कर रहे हैं। इसके अलावा मुझे लगता है कि मॉडल के अंदर उपयोगकर्ता url_helpers के लिए यह सबसे अच्छा अभ्यास नहीं है।

Rails.application.routes.url_helpers.media_url(:host => "localhost:3000")

या इस तरह एक अलग रास्ता:

Rails.application.routes.url_helpers.media_url(self, :host => AppConfig.host)

जहां AppConfig

+5

आपके उत्तर के लिए धन्यवाद। असल में अन्य नियंत्रक को स्वयं यूआरएल पास करने के लिए _path विधियों का उपयोग करने वाला मॉडल, यही कारण है कि यूआरएल सहायक सहित। मुझे समाधान मिला। शामिल नहीं है लेकिन इनलाइन कॉल करें। 'Rails.application.routes.url_helpers.medium_path (स्वयं)' अब ठीक काम करता है। – DIGITALSQUAD

3

आप कॉल में एक बहस जहां सहायक के रूप में प्रयोग कर रहे हैं मेजबान पास करनी होगी । होस्ट वातावरण के आधार पर मेजबान है (स्थानीयहोस्ट: 300 विकास एनवी के लिए)।

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