我在我的應用程序兩種模式利用Friendly_id寶石的現場應用程序(它使應用程序的URL是更具描述性和用戶友好。新安裝紅寶石寶石Friendly_Id沒有更新該已部署通過Heroku的
中的政治家型號:
class Politician < ActiveRecord::Base
has_many :interests
has_many :issues, through: :interests
validates :name, :political_party, :title, :slug, presence: true
extend FriendlyId
friendly_id :name, use: :slugged
end
和問題型號:
class Issue < ActiveRecord::Base
has_many :interests
has_many :politicians, through: :interests
validates :name, :slug, :keywords, presence: true
extend FriendlyId
friendly_id :name, use: :slugged
end
背景故事:該應用程序最初並不是將寶石安裝到Heroku。我構建了應用程序並將其部署到Heroku,然後我遇到了Friendly_ID gem。發現它之後,我在gemfile中安裝了gem,調整了上述模型和控制器,並且它在我的本地服務器上運行得非常好。
我以爲我是全部設置。我在Heroku上重新播種了我的數據,並將其推廣,但這些更改不會顯示在現場。並因此而不是使用廢料場每個模型像這樣:
www.mysite.com/politicians/barack-obama
www.mysite.com/issues/economy
我仍然看到:
www.mysite.com/politicians/7(奧巴馬的政治人物ID號)
www.mysite.com/issues/3(對於 「經濟」 問題上的ID號)
更多背後的故事:
我在StackOverflow上查看the gem's docs甚至a few questions here,他們都說如果您將gem添加到預先存在的應用程序,然後在Heroku控制檯中爲應用friendly_id gem的每個模型運行此代碼於:
heroku run console
然後:
Politician.find_each(&:save)
Issue.find_each(&:save)
這並不起作用: - /我的應用程序仍然沒有更新語義友好的URL。我還應該補充說,我最初使用了寶石的輔助模塊。所以,我有:
friendly_id :name, use: [:slugged, :history]
但提到刪除「幫手」關鍵字(?,然後將其保存後重新添加)有人on this StackOverflow thread,因爲這可能會阻止它更新在Heroku。我還沒有嘗試過(保存後重新添加「助手」的關鍵字,但我想提出我的問題,然後我浪費了一天的嘗試,而不是工作。
請幫助:-)
你是否遷移了你的heroku db以添加「slug」列?一切工作在當地:生產環境還是本地:發展? – eeeeeean
是的,當我在筆記本電腦上的服務器上本地運行應用程序時,一切正常。 「本地:生產環境」與「本地:發展」之間有什麼不同? –
是的,我運行我的heroku數據庫:heroku run rake db:migrate –