У меня есть приложение RoR, в котором я хочу применить имена пользовательских маршрутов, прямо сейчас у меня есть это:
localhost:3000/users/:id/groups/:id
И я хочу что-то вроде
localhost:3000/users/username/groups/groupname
До сих пор мне удалось создать маршрут для пользователя, и в итоге я получил:
localhost:3000/users/username
Я сделал это, добавив to_param
в свою модель пользователя, но как только я нажимаю, чтобы перейти в свои группы, он возвращается к :id
вместо имени пользователя.
Я также пытался применить to_param
к моей групповой модели, но это ничего не дало.
Это мои маршруты:
Rails.application.routes.draw do
devise_for :users
devise_scope :user do get '/users/sign_out' => 'devise/sessions#destroy' end
resources :users, only: [:index, :show] do
resources :groups, only: [:index, :show, :new, :create]
resources :entities, only: [:index, :show, :new, :create]
end
root "users#index"
end
Так что я не знаю, как этого добиться, проблема в файле маршрутов? или это в моделях?
С рельсов 5 вы можете использовать :param
, чтобы указать другой идентификатор.
resources :users, param: :username do
resources :groups, param: :groupname
end
Я верю, что это даст вам users/<username>/groups/<groupname>
.
Привет, спасибо за это. Я применил это решение к своим маршрутам, а затем обновил свои запросы с find(params[:id])
на find(params[:name])
, и оно работает, но не совсем так, как я хочу. Бывает, что если я набираю URL-адрес вручную и выбираю users/username/groups/groupname
, он работает, но если я нажимаю на любую ссылку (которая ведет меня в то же место), вместо этого все равно отображается идентификатор, есть идеи, как это решить? Я тоже сейчас использую дружественный, на всякий случай, если он чем-то поможет
Как вы создаете ссылки, можете ли вы опубликовать часть этого кода, и я посмотрю, смогу ли я помочь с этой проблемой. Нравится вид - я так понимаю, вы используете интерфейс rails
Я не принял это во внимание, мои ссылки выглядели так: ` <%= link_to group.name, user_group_path(current_user.id, group.id) %>` Вот почему это на самом деле не работало. Я заменил их на <%= link_to group.name, user_group_path(current_user.name, group.name) %>
, и теперь они работают как положено. После изменения моих ссылок мне пришлось изменить свои контроллеры из-за драгоценного камня Friendly_id, но это не имеет большого значения. Спасибо за помощь!
Ничего страшного, рад, что помогло.
Я предполагаю, что вы ищете что-то вроде этого guides.rubyonrails.org/….