友情ID不会改变网址中的slu

时间:2016-11-10 13:59:46

标签: ruby-on-rails ruby globalization friendly-id

我使用friendly_id gem制作slug并使用Rails翻译全球化gem,但是当我转到show.html.erb并更改语言时,控制器无法找到该条目。我的文件是:

Category.rb模型:

# == Schema Information
#
# Table name: categories
#
#  id          :integer          not null, primary key
#  name        :string
#  description :text
#  slug        :string
#  created_at  :datetime         not null
#  updated_at  :datetime         not null
#

class Category < ActiveRecord::Base
    validates_presence_of :name

    translates :name, :description, :slug

  extend FriendlyId
  friendly_id :name, :use => [:slugged, :globalize]

    def should_generate_new_friendly_id?
   name_changed?
    end

    has_and_belongs_to_many :sponsors

  def name_with_initial
    "#{name}"
  end
end

categories_controller.rb(仅我尝试查找类别的部分):

...
  private
  def set_category
    @category = Category.friendly.find(params[:id])
  rescue
   flash[:alert] = "Category don't exist."
   redirect_to admin_categories_path
  end
...

当我更改index.html.erb上的语言环境时,一切正常,我看到了翻译,但是当我在show.html.erb页面上而不是更改语言环境时,我遇到了问题。 我首先进行翻译(默认)而不是cz翻译。现在,当我到达时: http://localhost:3000/en/admin/categories/name-eng

改为cz链接如下: http://localhost:3000/cz/admin/categories/name-eng

只有区域设置发生了变化,但没有更新,并且没有错误。

---问题--- 当我第一次去cz变种链接时: http://localhost:3000/cz/admin/categories/name-cz

然后尝试更改为en我收到错误。控制器无法找到它,因为它试图找到cz slug。

在我改变I18n的控制台中,存在slu ..

你知道为什么会发生这种情况以及如何解决这个问题吗?谢谢!

---编辑--- 我改变时工作

@category = Category.find(params[:id])

并且show.html.erb的链接如下所示:

<%= link_to category.name, admin_category_path(:id => category.id) %>

但是我不能拥有友善的身份。

0 个答案:

没有答案