Rails 3 и чистые URL - PullRequest
       3

Rails 3 и чистые URL

3 голосов
/ 24 марта 2011

Какой самый эффективный способ сопоставить URL-адреса с идентификаторами базы данных.

Пример:

/newspaper/article/how-interesting-is-internet

При маршрутизации newspaper_controller получает article и how-interesting-is-internet.

Где и как мне хранить сопоставление для чистых URL и идентификаторов?

Ответы [ 4 ]

2 голосов
/ 24 марта 2011

FriendlyId - хороший плагин для этого (https://github.com/norman/friendly_id)

). Он позволяет вам указать столбец базы данных, который будет использоваться для создания идентификатора (имя или описание или что-то еще), и он позаботится обо всем.просто работа.

2 голосов
/ 24 марта 2011

вы должны проверить to_param метод

class Article < AR::Base
  def to_param
    self.cool_url # cool_url is column in your articles table with your clean url
  end
end

Поэтому я предлагаю сохранить ваш clean_url прямо в вашей модели Article с вашим ID и другими вещами

1 голос
/ 24 марта 2011

Мне тоже нравится подход friendlyId

Как я справляюсь с подобными вещами на примере классического блога

Blog Controller {извлекает все сообщения по дате}
Контроллер сообщений {}

Маршруты

resource :blog do
  resources :posts      
end

App / Модели / post.rb

class Post < ActiveRecord::Base
    belongs_to :site
    has_friendly_id :title, :use_slug => true   
end

Тогда вы получите несколько хороших путей

blog_path #Blog Index
blog_post(p) #Post Show
0 голосов
/ 13 апреля 2012

Используйте метод to_param для создания пользовательских URL, таких как http://myblog.com/posts/2012-04-22/123-my-first-post.html

class Post < ActiveRecord::Base
  def to_param
    "/posts/#{published_at}/{id}-#{title.parameterize}.html"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...