在做一个社区网站,为每个用户建立一个个人博客,创建了 resource Blog,然后创建脚手架 Post。每个用户一个 Blog。 下面是 routes.rb 文件:
Railspace::Application.routes.draw do
...............
resources :blogs do
resources :posts
end
root :to => 'Site#index'
match ':controller(/:action(/:id))(.:format)'
下面是 posts.rb 文件:
class Post < ActiveRecord::Base
attr_accessible :blog_id, :body, :created_at, :title, :updated_at
belongs_to :blog
validates_presence_of :title, :body, :blog
end
下面是 blog.rb 文件:
class Blog < ActiveRecord::Base
attr_accessible :blog_id
belongs_to :user
has_many :posts ,:order => "created_at DESC"
end
下面这个是 posts_controller.rb,在多加了一个方法,其他的代码没动过。
class PostsController < ApplicationController
before_filter :protect, :protect_blog
......
private
def protect_blog
@blog = Blog.find(params[:id])
user = User.find(session[:user_id])
unless @blog.user == user
flash[:notice] = "This is not your blog!"
redirect_to :action => "index", :controller => "user"
return flase
end
end
end
下面的超链接里应该填什么?试了 posts_path(blog),显示找不到 posts 方法。
<%= link_to 'blog' -%>
而且我明明已经在 blog.rb 中加了 has_many 方法,可是当我在 post 控制器的 index 方法中加“ @pages,@posts = paginate(@blog.posts)”就提示有错:找不到 posts 方法。
为什么???