2010-04-12 15 views
9

जैसा कि मैं हमेशा टाइप करता हूं कि मैं सामान्य रूप से रेल और प्रोग्रामिंग के लिए नया हूं इसलिए आसान हो जाएं। अग्रिम में धन्यवाद।रेल पर ब्लॉग रूबी बनाना - समस्याएं हटाने में समस्या

मैंने how to build a weblog in 15 minutes पर रायन बेट्स के प्रारंभिक ट्यूटोरियल का सफलतापूर्वक पालन किया है। यदि आपको नहीं पता कि यह ट्यूटोरियल आपको पोस्ट बनाने और उन पदों पर टिप्पणियों की अनुमति देने के माध्यम से ले जाता है। यह show.html.erb पेज पर पोस्ट बनाने और टिप्पणियों को प्रदर्शित करने के माध्यम से AJAX भी पेश करता है। सभी महान काम करता है।

यहां पर हिचकी है, जब रयान आपको इस ट्यूटोरियल के बावजूद ले जाता है तो वह टिप्पणियों को नियंत्रित करता है और टिप्पणियां बनाने के लिए कोड दिखाता है। मैं टिप्पणियों को संपादित और नष्ट करने की क्षमता को वापस जोड़ने की कोशिश कर रहा हूं। इसे काम करने के लिए प्रतीत नहीं होता है, वास्तविक पोस्ट को हटाते हुए टिप्पणी नहीं करता है (लॉग दिखाता है कि मैं पोस्ट नियंत्रक को अनुरोध भेज रहा हूं)।

class CommentsController < ApplicationController 
def create 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.create!(params[:comment]) 
    respond_to do |format| 
    format.html { redirect_to @post } 
    format.js 
    end 
end 

def destroy 
    @comment = Comment.find(params[:id]) 
    @comment.destroy 

    respond_to do |format| 
     format.html { redirect_to(posts_url) } 
     format.xml { head :ok } 
    end 
    end 
end 

/views/posts/show.html.erb

<%= render :partial => @post %> 

    <p> 
     <%= link_to 'Edit', edit_post_path (@post) %> | 
     <%= link_to 'Destroy', @post, :method => :delete, :confirm => "Are you sure?" %> | 
     <%= link_to 'See All Posts', posts_path %> 
    </p> 

    <h2>Comments</h2> 
    <div id="comments"> 
     <%= render :partial => @post.comments %> 
    </div> 

    <% remote_form_for [@post, Comment.new] do |f| %> 
     <p> 
      <%= f.label :body, "New Comment" %><br/> 
      <%= f.text_area :body %> 
     </p> 
     <p> 

<%= f.submit "Add Comment" %></p> 
<% end %> 

/views/comments/_comment.html.erb

<% div_for comment do %> 
    <p> 
     <strong>Posted <%= time_ago_in_words(comment.created_at) %> ago 
     </strong><br/> 
     <%= h(comment.body) %><br/> 
     <%= link_to 'Destroy', @comments, :method => :delete, :confirm => "Are you sure?" %> 
    </p> 
<% end %> 

routes.rb

: यहाँ मेरी कोड है
ActionController::Routing::Routes.draw do |map| 
    map.resources :posts, :has_many => :comments 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
end 
+0

"इसे काम करने के लिए नहीं देख सकता" - आपने वास्तव में इसे ठीक करने का प्रयास क्यों किया? – fig

+0

मैंने comment.html पर link.html को @comment, टिप्पणी, टिप्पणियां इत्यादि में बदलने का प्रयास किया है। मैंने टिप्पणियों के साथ गड़बड़ करने की भी कोशिश की है @comment = comment.find (params [: id] को बदलकर कार्रवाई को नष्ट कर दें। @ post.comment.destroy (पैराम्स [: comment_id]) शामिल करने के लिए। कुछ अन्य लोगों के साथ-साथ ऐसा लगता है कि या तो मेरे पास रूट्स में कुछ नहीं है। आरबी फ़ाइल सही है या comments.html में link_tob है गलत है। मैं मार्ग कोड शामिल करने के लिए अद्यतन करूँगा। – bgadoci

उत्तर

12

meagar सही रास्ते पर है, लेकिन चूंकि यह एक नेस्टेड मार्ग है आपको क्या करना है:

<%= link_to 'Destroy', [@post, comment], ... %>

तो, आप टिप्पणी और पोस्ट गुजर और दे रेल कर रहे हैं आधारित मार्ग यह पता लगाने आपकी परिभाषाओं पर।

+0

धन्यवाद के लिए अपरिभाषित विधि 'comment_path'। ऐसा लगता है कि मैंने हर संयोजन की कोशिश की लेकिन यह। पूरी तरह से काम किया। – bgadoci

1

_comments.html.erb में,बदलें

<%= link_to 'Destroy', comment, ... %> 

को आईई, यह comment ही गुजरती हैं, नहीं पूरे @comments सरणी।

+0

मुझे यह त्रुटि तब मिलती है जब मैं ऐसा करता हूं: # bgadoci

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