2012-10-04 96 views
0

我使用Ruby on Rails 3.2並創建了一個簡單的測試博客應用程序。有一個Post模型和一個評論模型,其中一個帖子has_many :comments和一個評論belongs_to :postRails 3.2嵌套路由和AJAX

在routes.rb中:

resources "posts" do 
    resources "comments" 
end 

我顯示在父後的頁面底部的意見,並通過AJAX提交新的評論。因此,我認爲用戶無需訪問/ posts/1/comments/XXX即可。但是,如果我從我的路線中刪除resources "comments",則評論功能不再有效。如何防止用戶在瀏覽器中訪問/ posts/1/comments/XXX,但保持評論AJAX功能的正常工作?

回答

3

作爲一種解決方案,您可以做些什麼來處理請求是xhr請求的路由。你可以做到這一點通過以下方式:

# routes.rb 
class OnlyAjaxRequest 
    def matches?(request) 
    request.xhr? 
    end 
end 

resources "posts" do 
    resources "comments", :constraints => OnlyAjaxRequest.new 
end 

您可以找到有關this blog post佈線約束的詳細信息。