Не могу использовать "actions_as_url" в ruby ​​на рельсах 3 - PullRequest
0 голосов
/ 30 сентября 2011

Я новичок, и мне жаль из-за моего глупого вопроса! Пожалуйста, помогите мне!! Я работаю с Rails 3, и это моя проблема:

У меня есть название модели: Фото с использованием драгоценного камня 'mongoid'.

Я хочу сделать постоянные ссылки, которые будут читаемыми URL вместо нечитаемых '_id', сгенерированных из mongoid!

После поиска в Google, я нашел драгоценный камень под названием "stringex"! Я решил использовать этот драгоценный камень и поместил эту строку в мой Gemfile:

gem 'stringex'

затем запустил "bundle install", чтобы использовать его.

Я просто делаю все, следуя инструкциям в github Readme_rsl / stringex , но возникает проблема:

undefined method `acts_as_url' for Photo:Class

Это потому, что ROR 3 не поддерживает этот камень? Или я что-то пропустил? Пожалуйста, мне нужна помощь!

Ответы [ 4 ]

2 голосов
/ 16 мая 2012

Возможно, это не тот ответ, который вы ищете, но я думаю, что ответ "вы не можете этого сделать".По крайней мере, в настоящее время.

Упомянутый вами камень тесно связан с ActiveRecord (см. Этот билет на выдачу ).Если вы посмотрите исходный код stringex в lib / stringex.rb , вы увидите, что acts_as_url включен только в ActiveRecord, а не в Mongoid.

Что происходит, когда вы используетеMongoid в вашей модели, и приятные методы acts_as_url не прикреплены к Mongoid :: Document.Это МОЖЕТ быть так же просто, как просто изменить lib / stringex.rb, чтобы он также включил activ_as_url в Mongoid, хотя я предполагаю, что если бы это было так просто, это уже было бы сделано.Существуют другие способы до генерации слагов .Я не использовал ни одного из них, поэтому я не могу говорить, какие из них хороши или нет.Мы надеемся, что «выработка слизняков-монгоидов» может направить вас в правильном направлении.

0 голосов
/ 18 мая 2012

Это не сложно написать самому. И это поможет вам понять несколько частей рельсов и маршрутов.

  1. Добавить столбец «Постоянная ссылка» в БД.
  2. Выполнить find_by_permalink (params [: id]) в контроллере
  3. Добавить метод def to_param в модель и вернуть постоянную ссылку колонка
  4. Добавить метод create_permalink before_validations. Генерировать Постоянная ссылка, как вам нравится, и сохраните ее в БД.

Единственная хитрость - обеспечение уникальности и обработка изменений имени (и URL). Похоже, что stringex помогает с уникальностью, а не с изменением имени.

Есть другие драгоценные камни, которые помогут с изменениями имени (псевдонимы и перенаправления, если есть новое имя), если вы заботитесь об этом. Вы можете справиться с этим по-разному.

0 голосов
/ 13 февраля 2012

В моем случае помог перезапуск команды rails server.

0 голосов
/ 19 декабря 2011

Ваша модель должна иметь атрибут url для хранения красивого url в базе данных для последующего использования.

Я не знаю, почему не упоминают об этом в README. Я узнал об этом после прочтения нескольких статей.

...