Rails 3.2嵌套路由和AJAX
我正在使用RubyonRails3.2,并创建了一个简单的测试博客应用程序。有一个Post模型和一个Comment模型,其中PostRails 3.2嵌套路由和AJAX,ajax,routes,ruby-on-rails-3.2,Ajax,Routes,Ruby On Rails 3.2,我正在使用RubyonRails3.2,并创建了一个简单的测试博客应用程序。有一个Post模型和一个Comment模型,其中Post有许多:comments,Comment属于:Post 在路由中。rb: resources "posts" do resources "comments" end 我在父帖子页面的底部显示评论,并通过AJAX提交新评论。因此,我认为用户没有必要访问/posts/1/comments/XXX。但是,如果我从我的路线中删除资源“注释”,那么注释功能将不再起作用。
有许多:comments
,Comment属于:Post
在路由中。rb:
resources "posts" do
resources "comments"
end
我在父帖子页面的底部显示评论,并通过AJAX提交新评论。因此,我认为用户没有必要访问/posts/1/comments/XXX。但是,如果我从我的路线中删除
资源“注释”
,那么注释功能将不再起作用。如何防止用户访问浏览器中的/posts/1/comments/XXX,但保持评论AJAX功能正常工作?作为解决方案,您可以将路由条件设置为请求为xhr请求。您可以通过以下方式执行此操作:
# routes.rb
class OnlyAjaxRequest
def matches?(request)
request.xhr?
end
end
resources "posts" do
resources "comments", :constraints => OnlyAjaxRequest.new
end
您可以在中找到有关路由约束的更多信息。作为解决方案,您可以将路由条件设置为请求为xhr请求。您可以通过以下方式执行此操作:
# routes.rb
class OnlyAjaxRequest
def matches?(request)
request.xhr?
end
end
resources "posts" do
resources "comments", :constraints => OnlyAjaxRequest.new
end
您可以在中找到有关布线约束的详细信息