Вопрос по URL-ссылкам - PullRequest
       5

Вопрос по URL-ссылкам

2 голосов
/ 01 октября 2010

Я пытаюсь, чтобы мои URL выглядели так:

example.com / сообщений / id_of_post / title_of_post

У меня есть это в моем контроллере:

match ':controller/:id/:link', :controller => 'posts', :action => 'show'

Скажите, у меня есть список сообщений .. как я могу на них ссылаться?

<%= link_to 'Show', post %>

Просто выдает обычный / posts / id

С другой стороны, я создаю удобную для URL ссылку при создании сообщения и сохраняю его в базе данных. Будет ли лучше создавать на лету? Это возможно / лучше?

Я видел это в ответе на другой вопрос:

def to_param
  normalized_name = title.gsub(' ', '-').gsub(/[^a-zA-Z0-9\_\-\.]/, '')
  "#{self.id}-#{normalized_name}"
end

Это сработало бы, если бы я мог изменить - на /. Возможно ли это?

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Я рекомендую просто сделать это вместо gsub:

def to_param
  "#{self.id}-#{title.parameterize}"
end

Недостатком является то, что при изменении заголовка URL-адрес изменяется.Что является недостатком.

Так что многие реализации будут делать

before_create :permanize

def permanize
  permalink = title.parameterize
end

def to_param
  "#{self.id}-#{permalink}"
end
0 голосов
/ 01 октября 2010

Вот что я сделал:

Я добавил это в свой пост # create:

@post.link = (@post.title.parameterize)

Я дам пользователю возможность редактировать заголовок в течение 5 минут после публикации.

Мой маршрут:

match "/posts/:id/:link" => "posts#show", :as => "story"

и мой индекс просмотра сообщений

<%= link_to 'Show', story_url(post, post.link) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...