Определите метод to_param
в модели, который возвращает строку, которую вы хотите использовать.
class Post < ActiveRecord::Base
def to_param
permalink
end
end
См. эту страницу , этот Railscast , (и, конечно, Google ) для получения дополнительной информации.
[Изменить]
Не думаю, что Полиморфные помощники URL достаточно умны, чтобы справиться с тем, что вы хотите сделать здесь. Я думаю, у вас есть два варианта.
1. Используйте специальный именованный маршрут и передайте параметр, аналогичный вашему вопросу и ответу Джитса.
match "/blog/:permalink" => "posts#show", :as => :post
и ссылка на него
<%= link_to @post.title, post_path(:permalink => @post.permalink) %>
2. Создайте новый помощник, который сгенерирует для вас URL
match "/blog/:permalink" => "posts#show", :as => :post_permalink
и помощник
def permalink_to(post)
post_permalink_path(post.permalink)
end
и по твоему мнению
<%= link_to @post.title, permalink_to(@post) %>