Простой рельсовый маршрут / URL-адрес - PullRequest
0 голосов
/ 01 мая 2010

Я использую элегантную аутентификацию Райана Бейтса в моем приложении для регистрации пользователя и входа в систему. Каждый пользователь has_many :widgets, но я бы хотел, чтобы пользователи могли просматривать виджеты других пользователей. Я думаю, что схема URL, такая как /username/widgets/widget_id, имеет большой смысл - она ​​будет хранить весь код, связанный с виджетами, в одном месте (контроллер виджетов). Однако я не уверен, как использовать этот стиль URL в моем приложении.

Прямо сейчас моя кодовая база такова, что она позволяет зарегистрированным пользователям просматривать только свои собственные виджеты, которые живут на /widgets/widget_id. Какие изменения мне нужно будет внести в route.rb, в мои классы моделей и в любое место, где необходимы ссылки на данный виджет?

Я уже работал на Rails, но я новичок, когда дело доходит до более сложной маршрутизации и т. Д., Поэтому я буду признателен за любые отзывы. Спасибо за ваше внимание!

Ответы [ 2 ]

0 голосов
/ 01 мая 2010

Самый простой вариант - плагин InheritedResources , который обрабатывает большую часть работы за вас.

# routes:
map.resources :users do |user|
  user.resources :widgets
end


class WidgetsController < InheritedResources::Base
  # this will require :user_id to be passed on all requests
  # @user will be set accordingly
  # and widget will be searched in @user.widgets
  belongs_to :user
end

# no changes required to the models
0 голосов
/ 01 мая 2010

Посмотрите на вложенные маршруты. Вы можете вкладывать виджеты внутри пользователей, например так:

map.resources :users do |users|
  users.resources :widgets
end

Что даст вам такие URL:

/users/1/widgets # all of user 1's widgets
/users/1/widgets/1 # one of user 1's widgets

Ознакомьтесь с руководством по маршрутизации для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...