我使用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) %>
但是我不能拥有友善的身份。