Я не могу попробовать это, пока не вернусь домой, но я бы предпочел просто передать @post. Возможно, я спрашиваю слишком много, но для меня странно, что рельсы могут вычислять месяц и день по умолчанию, но используют идентификатор в качестве года.
даю приложение блога на Rails 3 и хочу переопределить выставочный маршрут по умолчанию, сгенерированный для поста, выполнив
resources :posts, :except => :show
Который генерирует, для маршрута показа (если бы я не исключил его),
/post/:id
Вместо этого я хочу, чтобы мой маршрут выглядел следующим образом, где url_title - это строка, сгенерированная моей моделью в before_save, где он удаляет не алфавитно-цифровые символы и заменяет пробелы дефисами.
/:year/:month/:day/:url_title
Я пытаюсь сделать это с помощью этого кода:
match "/:year/:month/:day/:url_title", :to => "posts#show", :as => :post
Теоретически это должно позволить мне вызвать post_path (@post) (где @post - это экземпляр моего класса post), и он должен иметь возможность разобраться с этим маршрутом, и этопочти работает.
Единственная проблема заключается в том, что он пытается заменить идентификатор сообщения в течение года. Остальные поля заполнены правильно. Я думаю, что это происходит из-за того, что у rails есть поведение по умолчанию, которое заставляет его действительно, очень хотеть иметь идентификатор в URL, и оно не доверяет мне использовать мой собственный уникальный идентификатор (в данном случае post.url_title).
Хотя я могу ошибаться по этому поводу. Кто-нибудь имеет опыт работы с такого рода маршрутизацией или знает, что случилось?