Я создаю в настоящее время одно приложение для направляющих, и я хотел бы придерживаться всех тех необычных вещей как REST и Ресурсы, но я хотел бы настроить свои маршруты немного. Я хочу мой ЗАСТАВЛЯТЬ маршрут быть немного более подробным - приложение, которое я создаю, простой блог, таким образом, вместо GET /posts/1
Я предпочел бы что-то как GET /posts/1-my-first-post
.
Какие-либо идеи, как сделать это? Ничего не нашел в сети.
Определенно идите с опцией 5 - это тип safe и позволяет компилятору оптимизировать (не принимать адрес этой переменной:) Также, если он находится в заголовке - втяните его в пространство имен, чтобы избежать загрязнения глобальной области:
// header.hpp
namespace constants
{
const int GLOBAL_CONST_VAR = 0xFF;
// ... other related constants
} // namespace constants
// source.cpp - use it
#include <header.hpp>
int value = constants::GLOBAL_CONST_VAR;
-121--848925- Маршруты:
map.resources :posts
Модель:
class Post < ActiveRecord::Base
def to_param
"#{id.to_s}-#{slug}"
end
end
Следует сделать хитрость.
Маршруты:
map.resources :posts
Модель:
class Post < ActiveRecord::Base
def to_param
"#{id.to_s}-#{slug}"
end
end
.
Btw: http://railscasts.com/episodes/63-model-name-in-url
-121--4132604- Определите метод для _ param
в модели, и все url-помощники будут использовать то, что вы вернете с помощью этого метода, например:
class Post < ActiveRecord::Base
der to_param
slug
end
end
Вам также потребуется адаптировать свои контроллеры для этого. Замените:
Post.find(params[:id])
на:
Post.find_by_slug(params[:id])
Также обратите внимание, что метод поиска вызывает исключение ActiveRecord:: RecordNotFound, если запись не может быть найдена при использовании метода find_by_ * Никакие исключения не будут созданы, поэтому необходимо проверить это вручную.
Хорошая среда IDE, такая как Eclipse, показывает в различных цветах и/или шрифтах атрибуты и переменные методов вашего класса. Becaus этой переменной затенения в порядке.
-121--2602319-Существует функция C с именем isdigit .
-121--2295174-Вы могли бы найти дружественный _ id плагин полезен, так как он также будет обрабатывать перенаправления, если вы переименовываете слизняки (таким образом seo friendly), обрабатывает конфликты имен и легко интегрируется с методом поиска, так что вам не нужно касаться ваших методов контроллера (за исключением перенаправления thinging).
Alternatively...
Добавьте метод вроде этого в post.rb
def path
"/posts/#{id}-#{slug}"
end
Затем используйте следующее в ваших представлениях:
Alternatively...
Добавьте метод вроде этого в application_helper.rb
def permalink(post)
"#{post_path(post)}-#{post.slug}"
end
Затем используйте следующее в ваших представлениях (используя permalink(@post)
вместо post_path
)
<%= link_to @post.title, permalink(@post) %>