Глядя на свой маршрут, вы можете пересекать две разные вещи.Что ты делаешь?Если это профили, нет необходимости указывать идентификатор.Предположим, вы пытаетесь разбить профили на страницы.Ваш маршрут будет выглядеть так:
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
Дайте мне знать, если это работает.
ОБНОВЛЕНИЕ:
Вы указали в комментариях, что /profile/1/
относится к собственному профилю пользователя.Во-первых, это опасно, потому что вы не хотите, чтобы люди меняли профиль своего приложения, просто изменяя этот идентификатор вручную.Положитесь на любой метод 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
с этим, измените маршрут на именованный маршрут:
map.profile_browse '/profiles/:id/browse/:page',
:controller => 'profiles',
:action => 'browse',
:id => /\d+/,
:page => /\d+/
Теперь вы можете позвонить link_to
следующим образом:
link_to profile_browse_path(:id => 1, :page => 10)