看着你的路线,你可能会穿越两个不同的东西。你在分页什么?如果它是个人资料,则不需要提供ID。假设您正在尝试对配置文件进行分页。您的路线是这样的:
map.connect '/profiles/browse/:page',
:controller => 'profiles',
:action => 'index',
:page => /\d+/
和你的控制器动作应该是这样的:
def index
@profiles = Profile.paginate :page => params[:page]
end
如果你想配置文件中嵌套的东西,比如说浏览个人资料的图片,你需要与您的控制器
map.connect '/profiles/:id/browse/:page',
:controller => 'profiles',
:action => 'index',
:id => /\d+/,
:page => /\d+/
像这样:做更多这样的
def index
@profile = Profile.find(params[:id])
@pictures = @profile.pictures.paginate :page => params[:page]
end
让我知道这是否有效。
UPDATE:
您在/profile/1/
指的是用户自己的配置文件中的注释中列出。首先,这是非常危险的,因为您不希望人们通过手动更改该ID号码来更改应用程序认为它们的个人资料。依靠您的身份验证为您提供的任何current_user
方法。
然而,使用您的当前设置为例,这是它会是什么样子:
map.connect '/profiles/:id/browse/:page',
:controller => 'profiles',
:action => 'browse',
:id => /\d+/,
:page => /\d+/
与您的控制器像这样:
def browse
@profile = Profile.find(params[:id])
@profiles = Profile.paginate :page => params[:page]
end
让我知道,如果你还有问题。
更新2
为了得到一个不错的link_to
与此,路线更改为命名的路由:
现在,您可以拨打link_to
像这样:
link_to profile_browse_path(:id => 1, :page => 10)
嘿,浏览是配置文件资源的成员。不知道这是否会改变什么? – Brian 2010-10-21 22:33:50
所以,当用户登录配置文件/ 1代表用户。 profile/1/browse只是表示用户在浏览部分 – Brian 2010-10-21 22:37:25
他们浏览了什么,需要进行分页? – 2010-10-21 22:38:35