2010-07-23 16 views
10

बस मेरे मॉडल में एक साधारण validates_presence_of लेखन की कोशिश की, और जब त्रुटियों रेंडर करने के लिए प्रयास करते हैं, यह इस कॉल:नए रेल 3 एप से लापता टेम्पलेट्स?

Template is missing 

Missing template posts/create with {:locale=>[:en, :en], :handlers=>[:builder, :rjs, :erb, :rhtml, :rxml, :haml], :formats=>[:html]} in view paths "/Users/johnsmith/Sites/shwagr/app/views" 

त्रुटियाँ Rails3 में अलग विचारों की जरूरत नहीं है कि वे? मैंने सोचा था कि रेल जादू था ..

उत्सुक अगर किसी को यह समस्या हो, या पता था कि इसे सही तरीके से कैसे सत्यापित किया जाए।

मेरे मॉडल:

validates_presence_of :category, :name, :url 

मेरे नियंत्रक:

def new 
    @post = Post.new 

    respond_to do |format| 
    format.html # new.html.erb 
    format.xml { render :xml => @post } 
    end 
end 


def create 
    @post = Post.new(params[:post]) 
    if @post.valid? && current_user.posts << @post 
    respond_to do |format| 
     if @post.save 
     format.html { redirect_to(@post, :notice => 'Post was successfully created.') } 
     format.xml { render :xml => @post, :status => :created, :location => @post } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @post.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 
end 

अद्यतन

दिलचस्प है, मैं 'टच एप्लिकेशन/विचारों/पदों/create.html.haml', और अब यह त्रुटि को हटा दिया और इसके बजाय उस पृष्ठ को लोड करता है। लेकिन यह क्यों होगा? या सबसे महत्वपूर्ण बात यह है कि, मैं इसे वापस नए_पोस्ट_पैथ (@ पोस्ट) पर रीडायरेक्ट कैसे कर सकता हूं जैसे इसे करना चाहिए?

उत्तर

12

अपने

if @post.valid? && current_user.posts << @post 

लाइन झूठी देता है, तो कोई प्रस्तुत करना() या redirect_to() कहा जाता है। रेल का डिफ़ॉल्ट व्यवहार तब आपकी विधि के समान नाम के साथ दृश्य प्रस्तुत करना है। यह create.BUILDER.FORMAT होगा।

लाइन को निकालने का प्रयास करें। बजाय इस कोड का उपयोग करें:

@post = current_user.posts.new(params[:post]) 
respond_to do |format| 
    if @post.save 
    ... 

या साथ

render :action => "new" 
1

नहीं, उनके पास अलग-अलग विचार नहीं हैं। तो क्या आपके पास app/views/posts/create.html.erb फ़ाइल है?

+0

No..I एक _form/संपादित करें/सूचकांक/नई/शो है ..और इस फार्म यह था के साथ आया था .. = form_for @post बनाने करो | एफ | -if @ post.errors.any? #errorExplanation % h2 = "# {pluralize (@ post.errors.count," त्रुटि ")} इस पोस्ट को सहेजे जाने से निषिद्ध:" % उल - @ post.errors.full_messages.each करना | msg | % li = msg इसे किसी और चीज की आवश्यकता है? – Trip

+0

हालांकि कुछ अजीब, मेथिंक यद्यपि हो रहा है। चूंकि सत्यापन 'रेल' में बॉक्स के ठीक बाहर काम करता है। मैंने अपडेट किया कि मेरे मॉडल ऊपर की तरह दिखते हैं। – Trip

+0

ठीक है। कृपया नियंत्रक कोड दिखाने के लिए कृपया अपना प्रश्न संपादित करें। –

2

आह यह मिल गया एक और को मामले में लिखें। ऐसा इसलिए है क्योंकि यह कभी मान्य नहीं था, इसलिए यह 'बनाओ' पर खुद को लूप करेगा, वहां कोई टेम्पलेट नहीं ढूंढ पाएगा और त्रुटि होगी। सही तरीका स्थापित करने के लिए डीईएफ़ होगा इस

def create 
    @post = Post.new(params[:post]) 
    if @post.valid? && current_user.posts << @post 
    respond_to do |format| 
     if @post.save 
     format.html { redirect_to(@post, :notice => 'Post was successfully created.') } 
     format.xml { render :xml => @post, :status => :created, :location => @post } 
     else 
     format.html { redirect_to new_user_post_path(:current) } 
     format.xml { render :xml => @post.errors, :status => :unprocessable_entity } 
     end 
    end 
    else 
    render :action => 'new' 
    end 
end 
संबंधित मुद्दे