问题标签 [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.
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 动作就会给出同样的错误。
希望这是足够的细节。我对如何回到工作状态感到非常困惑。
ruby-on-rails - Rails - FriendlyId 和条件
我有一个模型帖子,它属于_to 类别(使用friendly_id)。现在我想列出一个类别中的所有帖子。要获取索引页面,我想使用如下链接:http://mysite/posts/category/_category_slug_,为此我做了以下路线:
在我的后控制器中,我得到了:
它应该像它应该的那样工作,但我不认为它是friedndly_id 的方式。
有没有更好的方法来实现这一目标?谢谢你的帮助。
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?
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?
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,因为它应该可以工作?
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 替代方法?- 你能看出我在做什么导致问题的错误吗?
代码: 型号:
ruby-on-rails - 如何使用带 STI 的 Friendly_Id?
我很困惑如何设置friendly_id (4.0.0.beta12) gem 以与STI 模型一起正常工作。
这是模型设置:
如果我尝试这样的事情:
产生的错误是:
问题是friendly_id 的选择查找类型设置为“福特”的slug 并干净利落(因为slug 'test' 已经属于类型'Toyota' 的记录)。假设不存在名为 'test' 的 slug,然后它会尝试使用 slug 'test' 保存记录,一切都将陷入困境。
有任何想法吗?
谢谢!
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 --> 空间?
ruby-on-rails - 如何使用用户模型中的用户名将 example.com/profiles/1 移动到 example.com/username?
我有关于rails 的friendly_id 的红色文档。这很容易:您将某个属性设置为 slug。
example.com/username
所以你看到了我的困境。我在配置文件模型中没有列用户名。如何链接用户模型、用户名字段,以便我可以使用友好 ID 执行 example.com/username?
当然,这相对简单。
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,如果这很重要的话。
我的问题:
- 如果我将 name-attribute 作为friendly_id 而不是 slug_en 或 slug_se,通常会出现什么问题
- 我在这里提交的代码有什么问题吗?
- postgre / mysql-differences 会导致这种情况吗?
- 是不是我的 Heroku 安装上没有创建索引的问题?
谢谢!