Маршрутизация направляющих - пользовательские маршруты для Ресурсов

Я создаю в настоящее время одно приложение для направляющих, и я хотел бы придерживаться всех тех необычных вещей как REST и Ресурсы, но я хотел бы настроить свои маршруты немного. Я хочу мой ЗАСТАВЛЯТЬ маршрут быть немного более подробным - приложение, которое я создаю, простой блог, таким образом, вместо GET /posts/1 Я предпочел бы что-то как GET /posts/1-my-first-post.

Какие-либо идеи, как сделать это? Ничего не нашел в сети.

6
задан meagar 10 June 2011 в 14:21
поделиться

5 ответов

Определенно идите с опцией 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

Следует сделать хитрость.

Btw: http://railscasts.com/episodes/63-model-name-in-url

16
ответ дан 8 December 2019 в 05:54
поделиться

Маршруты:

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_ * Никакие исключения не будут созданы, поэтому необходимо проверить это вручную.

4
ответ дан 8 December 2019 в 05:54
поделиться

Хорошая среда IDE, такая как Eclipse, показывает в различных цветах и/или шрифтах атрибуты и переменные методов вашего класса. Becaus этой переменной затенения в порядке.

-121--2602319-

Существует функция C с именем isdigit .

-121--2295174-

Вы могли бы найти дружественный _ id плагин полезен, так как он также будет обрабатывать перенаправления, если вы переименовываете слизняки (таким образом seo friendly), обрабатывает конфликты имен и легко интегрируется с методом поиска, так что вам не нужно касаться ваших методов контроллера (за исключением перенаправления thinging).

2
ответ дан 8 December 2019 в 05:54
поделиться

Alternatively...

Добавьте метод вроде этого в post.rb

def path
  "/posts/#{id}-#{slug}"
end

Затем используйте следующее в ваших представлениях:

0
ответ дан 8 December 2019 в 05:54
поделиться

Alternatively...

Добавьте метод вроде этого в application_helper.rb

def permalink(post)
  "#{post_path(post)}-#{post.slug}"
end

Затем используйте следующее в ваших представлениях (используя permalink(@post) вместо post_path)

<%= link_to @post.title, permalink(@post) %>
0
ответ дан 8 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: