我的User
模型与has_many
模型有Post
关系。
Class User < ActiveRecord::Base
has_many :posts
end
Class Post < ActiveRecord::Base
attr_accessor :user_id
belongs_to :user
end
我想设置我的帖子模型的网址,其中首先是帖子所有者的名字,然后是帖子的名称:
localhost:3000/john/sample-post
我尝试在我的帖子模型中的slug_candidates
方法中进行设置,但出现了错误:
Class Post < ActiveRecord::Base
...
extend FriendlyId
friendly_id :slug_candidates, user: [:slugged, :history]
def slug_candidates
[:name, [self.user.name, :name]]
end
end
我需要在此方法中更改哪些内容才能使其正常工作?
答案 0 :(得分:1)
docs通过以下示例解释:
您也可以使用命名参数为路由添加前缀:
scope ':username' do resources :posts end
这将为您提供诸如/ bob / posts / 1之类的URL,并允许您在控制器,帮助程序和视图中将路径的用户名部分引用为
params[:username]
。