2016-02-02 9 views
1

На моей индексной странице у меня есть следующее, как часть создания драгоценного камня Acts_as_votable.Ruby-on-Rails + FriendlyId gem + Acts_as_Votable gem - получение ошибки Heroku

<%= link_to like_bike_path(bike), method: :put, class: "btn btn-default" do %> 

Он работал хорошо, пока я не добавил FriendlyId, вероятно, потому, что like_bike_path ищет идентификатор не friendlyID (то есть тщеславие URL). Есть ли способ изменить

like_bike_path

к чему-то вроде

like_friendly.find_path 

Работы на Localhost: 3000, но журналы Heroku сказать мне ActionView::Template::Error (undefined method slug' for #<Bike" для двух моих acts_as_votable звонков "like_bike_path (велосипед)" и "< % = bike.get_upvotes.size%> ".

спасибо!

+0

Привет, Дейв! Не могли бы вы прояснить, что пошло не так? Что работает не так, как вы ожидали? Потому что act_as_votable больше похож на модель, и я полагаю, что like_bike_path - обычный маршрут рельсов. – kimrgrey

+0

Привет @kimrgrey! Извинения за неясность ошибки. Спасибо за последующие вопросы. Думаю, я решил проблему. Все еще проверяем. Исправлено изменение @bike = Bike.friendly.find (bike_id) из того, что у меня было ранее: bike = Bike.find_by_id (bike_id) в контроллере велосипедов. Поэтому я думаю, что проблема - это просто маршрут рельсов к вашей точке. Первоначальная ошибка была неудачным нажатием на Heroku. –

+0

Отлично! Я как один из сопровождающих frienldy_id очень рад услышать, что наше программное обеспечение полезно для вас ;-) Кстати, вы можете использовать модуль: finders, чтобы иметь возможность называть что-то вроде Bike.find (slug) вместо Bike.friendly.find (пробковый). Он может решить некоторые возможные проблемы с cancancan и другими библиотеками, которые ожидают, что ресурс можно искать с помощью простой находки с идентификатором ресурса. – kimrgrey

ответ

0
#app/models/bike.rb 
class Bike < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :column, use: [:finders, :slugged] 
end 

Это позволит использовать slug без изменения шаблона по умолчанию в ActiveRecord ... (@bike = Bike.find params[:id]).

-

В отношении вашей ошибки heroku, это означает, что вы не получили мигрировали базы данных (она не включает в себя slug в своих колонках).

Вам необходимо убедиться, что вы запустите heroku run rake db:migrate, а также убедитесь, что вы сохранили все записи @bike (так что заполняется столбец slug).

+1

Спасибо, @Rich! Я удостоверился, что у меня было: slug in params 'bike_params = params.require (: bike) .permit (: name,: description,: image,: slug) ' и я сделал« гейк-рейк-рейк-дБ: мигрировать ». Исправлено! –

 Смежные вопросы

  • Нет связанных вопросов^_^