Очистите URL-адреса, используя косую черту '/' в to_param с Rails (3) - PullRequest
4 голосов
/ 28 июля 2010

Возможно ли это?

def to_param
  "#{id}%2F#{slug}"
end

Это работает в Chrome и Safari, но если Firefox, вы видите «% 2F» в адресной строке.Есть ли способ чище?

Ответы [ 4 ]

10 голосов
/ 18 марта 2011

Это действительно старый пост, но я хочу немного на нем остановиться.

Если вы не хотите обрабатывать переменную slug в своих параметрах, вам действительно нужно определить этот методto_param в вашей модели

def to_param
  "#{id}/#{title}"
end

и установите маршрут следующим образом:

resources :posts, :id => /[0-9]+\/.+/

Таким образом, ваше определение ссылки будет выглядеть совершенно как:

link_to post.title, post_url(post)

Очень просто: http://www.miguelsanmiguel.com/2011/03/17/slug-that-slash

3 голосов
/ 24 августа 2010

Хорошо, я попробовал это только сейчас, вам это не понадобится:

def to_param
  "#{id}/#{slug}"
end

В rout.rb (замените то, что вы хотите на то, что вам нужно)

match "/expenses/:id/:slug" => "expenses#show", :as => :expense

Ваша ссылка теперь должна выглядеть так

= link_to "something", expense_url(:id => expense.id, :slug => expense.slug)

надеюсь, это немного поможет

2 голосов
/ 19 августа 2010

Посмотрите на Friendly ID - он полностью уничтожит ID и просто использует слаг.Также совместим с Rails 3.

0 голосов
/ 26 августа 2010

может быть, что-то вроде этого может помочь вам

match "/foo/:id", :to => redirect("/bar/%{id}s")

, ознакомьтесь с разделом «Метод перенаправления» в этой статье о rails3 и маршрутах

http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/

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