问题标签 [friendly-id]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
209 浏览

ruby-on-rails - 如何修复由 FriendlyId 引起的 Controller#create 上的 NoMethodErrod

我有一个使用 FriendlyId gem 的 rails 应用程序,最近我开始在开发和测试中遇到 NoMethodErrors。这个问题最近才开始,我们对项目进行了几次迭代(heroku 上的“staging”仍在工作)。

为友好 ID 设置的任何模型创建新记录时会出现问题。这是其中一种模型:

我在运行测试时收到的错误是PlaylistsController#create 中的 NoMethodError错误消息的正文是这样的:

跟踪从这里开始:

我已经确认它与friendly_id gem 有关,因为注释掉'hasfriendly_id' 行并且创建调用再次起作用。我也尝试过相关的 rake 任务:运行

给我同样的错误。或者,在 slugs 表上运行向下迁移并重新运行 rails g friendly_id 和向上迁移,然后运行

完全杀死了桌子,从那时起只尝试 playlist#show 动作就会给出同样的错误。

希望这是足够的细节。我对如何回到工作状态感到非常困惑。

0 投票
1 回答
351 浏览

ruby-on-rails - Rails - FriendlyId 和条件

我有一个模型帖子,它属于_to 类别(使用friendly_id)。现在我想列出一个类别中的所有帖子。要获取索引页面,我想使用如下链接:http://mysite/posts/category/_category_slug_,为此我做了以下路线:

在我的后控制器中,我得到了:

它应该像它应该的那样工作,但我不认为它是friedndly_id 的方式。

有没有更好的方法来实现这一目标?谢谢你的帮助。

0 投票
2 回答
3390 浏览

ruby-on-rails-3 - Rails 3:如何使用 gsub 或用“-”替换空白字符?

我有一个艺术家模型是名称:字符串。我想要 /users/1/artists/jimi-hendrix/posts 而不是我现在拥有的 /users/1/artists/1/posts

问题是我不认为我可以使用friendly_id 作为艺术家的名字,这是因为我有多个相同的艺术家名字,但我想使用相同的slug,例如所有'jimi hendrix'条目的jimi-hendrix。例子:

Friendly_id 使它看起来像这样:(我不能拥有)/users/3/artists/jimi-hendrix/posts /users/55/artists/jimi-hendrix--2/posts /users/106/artists/jimi -hendrix--3/帖子

所以我想做的是将艺术家姓名参数传递给控制器​​而不是 id。但是我需要取名字并用“-”替换所有空格,然后在控制器中添加空格对吗?

这将是我的链接:(你能做一些类似artist.name.gsub!()的事情吗??)

然后当我将代码返回控制器时反转它?

def index @name = params(:artist_id).gsub() # ? @posts = ... ...结束

或者有人知道如何在friendly_id 中添加非唯一的slug,因此如果属性具有重复名称,它不会附加--2、--3?

0 投票
2 回答
637 浏览

ruby-on-rails - friendly_id 和新记录

我正在使用friendly_id 4.0.0.beta8 并且喜欢生成使用slug 的URL,但仍包含模型ID。似乎friendly_id 会在_validation 之前生成slugs。但是,此时(保存前)当然没有可用的模型 ID,因此 friendly_id 会创建没有 id 的 slug。

我如何确保新记录在初始保存后会有带有 id 的 slug?

0 投票
1 回答
621 浏览

translate - 翻译friendly_id

使用:

Rails:3.0.3 Friendly_id:3.2.1

我正在建立一个具有(当前)两个语言环境的网站, :se 和 :en 我在其中使用friendly_id 来获取对 SEO 友好的 url。

目前,它工作正常,但我正试图让它与语言环境一起工作,并一直陷入死胡同。

有什么作用:

我为当前存在于 cached_slug 列中的名称创建了friendly_id。这很好用,我既可以使用 Calculation.find("calculation-name") 并使用它获取 url:s,例如 domain.com/calculation-name

什么不起作用:在实现这个之后:http://rdoc.info/github/norman/friendly_id/master/FriendlyId/I18n ,我现在有两列 slug_en 和 slug_se ,每个友好_id的翻译版本。我还在该指南中添加了索引。

我无法让我的应用程序找到它们(无论是通过 Calculation.find("this-swedish-translation") 还是通过 url domain.com/this-swedish-translation),但我已经彻底谷歌了,但没有运气。

我不知道是否需要更改模型中的某些内容。has_friendly_id 中与 I18n 相关的每个属性都会给我错误消息,例如:

  • default_locale
  • 语言环境

我也不能使用 :use => slugged 或 :use => :locale 等属性。

我的第一个猜测是我使用的版本不支持 I18n/locales?很难理解文档实际上指的是什么......

我的大问题是:我的假设和/或代码有什么问题?为什么我不能让我的应用程序使用 slug_en 和 slug_es,因为它应该可以工作?

0 投票
2 回答
1220 浏览

ruby-on-rails - 将友好 ID 和 i18n 与 update_attributes 一起使用会导致覆盖

使用: - Rails 3.0.3 - Friendly_id 4.0.0 Beta 11 - Windows - i18n (0.6.0, 0.5.0) 根据“gem list”

设置: 我有一个使用瑞典语和英语作为语言进行计算的多语言网站。我正在使用friendly_id 创建对seo 友好的网址。

在我的 mysql 表中,我有列“slug”、“slug_se”和“slug_en”。我不确定是否需要使用“slug”列,它与“slug_en”相同。

问题: 使用“update_attributes”时,它会用“slug”(默认为英文)覆盖“slug_se”。因此,“slug”中的值写入“slug_se”。

疑难解答: - 我在 Google 上搜索过这个问题,但在 Google 论坛 (http://groups.google.com/group/friendly_id/browse_thread/thread/154f4a5024e23418) 上只找到了一个(未答复的)论坛主题,没有得到答复。- 我试图找到 update_attributes 的替代品,我可以通过 mysql 但那真的不整洁。

问题: - 我需要使用“slug”列吗?- 是否有不尝试更新 id 的 update_attributes 替代方法?- 你能看出我在做什么导致问题的错误吗?

代码: 型号:

0 投票
2 回答
894 浏览

ruby-on-rails - 如何使用带 STI 的 Friendly_Id?

我很困惑如何设置friendly_id (4.0.0.beta12) gem 以与STI 模型一起正常工作。

这是模型设置:

如果我尝试这样的事情:

产生的错误是:

问题是friendly_id 的选择查找类型设置为“福特”的slug 并干净利落(因为slug 'test' 已经属于类型'Toyota' 的记录)。假设不存在名为 'test' 的 slug,然后它会尝试使用 slug 'test' 保存记录,一切都将陷入困境。

有任何想法吗?

谢谢!

0 投票
5 回答
4098 浏览

ruby-on-rails - 使用 ActiveAdmin 和 Friendly_id 时的 ActiveRecord::ReadOnlyRecord

我最近在一个项目中开始使用 ActiveAdmin,几乎一切都很好,但是在将它与 friendly_id gem 结合使用时遇到了问题。我的表单收到 ActiveRecord::ReadOnlyRecord [我相信],因为友好 ID 属性的 ID 是只读的:

我猜最后一行是罪魁祸首,因为它是一个只读属性,它不在我的表单中,而是在 PATH 中

http://localhost:5000/manage/spaces/the-kosmonaut/edit

如何通过尝试更新 ID 来解决此问题?

ActiveAdmin 中的表单如下所示:

更新:这也不起作用,所以它不是friendly_id?

我尝试使用@watson 的建议,该建议应该有效,但仍然出现相同的错误;-(

http://localhost:5000/manage/spaces/6933/edit

当我使用record.readonly检查控制台中的记录时?它返回假

更新更新:删除 scope_to 可以解决问题。

唯一的问题是我需要 scope_to 来防止用户看到他们不拥有的记录。我的猜测是(因为我假设 scope_to 通常与 has_many 一起使用)我的 HABTM 关联会导致一些奇怪?即用户 <-- HABTM --> 空间?

0 投票
3 回答
2383 浏览

ruby-on-rails - 如何使用用户模型中的用户名将 example.com/profiles/1 移动到 example.com/username?

我有关于rails 的friendly_id 的红色文档。这很容易:您将某个属性设置为 slug。

example.com/username

所以你看到了我的困境。我在配置文件模型中没有列用户名。如何链接用户模型、用户名字段,以便我可以使用友好 ID 执行 example.com/username?

当然,这相对简单。

0 投票
1 回答
744 浏览

ruby-on-rails - Rails:friendly_id 使用名称而不是 slug 作为 id

使用:Rails 3.0.3 Friendly_id:4.0.0.beta11

我已经创建了一个可以正常工作的应用程序的开发版本,其中一切正常,包括friendly_id url:s 像 domain.com/cars/mitsubishi

现在我正在 Heroku 上部署应用程序,但由于某种原因我无法让 friendly_id 工作。

问题:当我在 Heroku 上部署它时,它给了我作为friendly_id 的“名称”,而不是 slug_en 或 slug_se。Calculation.first.friendly_id 给出了例如“我是一个计算”,而不是“我是一个计算”,后者将是 slug_en 的内容。

模型(计算)

迁移(计算):

迁移2:

问题是我需要将我的本地数据库推送(heroku db:push)到 Heroku(因为它充满了数据),因此我不确定我能在多大程度上信任迁移。据我了解,它们被 db:push 覆盖。

现在,这并不重要,因为它在本地运行良好。如果我使用 I18n.locale = :se 它会给我 slug_se 作为 id 和 slug_en 为 :en。

值得一提的是 Heroku 使用 postgre 而我在本地使用 mysql,如果这很重要的话。

我的问题:

  1. 如果我将 name-attribute 作为friendly_id 而不是 slug_en 或 slug_se,通常会出现什么问题
  2. 我在这里提交的代码有什么问题吗?
  3. postgre / mysql-differences 会导致这种情况吗?
  4. 是不是我的 Heroku 安装上没有创建索引的问题?

谢谢!