ruby-on-rails – friendly_id slug在更新时没有变化
发布时间:2020-12-16 19:30:06 所属栏目:百科 来源:网络整理
导读:我正在使用friendly_id 5.0.0.rc1,还有active_admin. 看起来一切都按预期完美地工作,除了在active_admin中更新记录的slug属性/列没有做任何事情(它保持相同) 我发现只使用控制台的行为相同: p = Post.firstp.slug#= 'test'p.slug = 'another-test'p.save#=
我正在使用friendly_id 5.0.0.rc1,还有active_admin.
看起来一切都按预期完美地工作,除了在active_admin中更新记录的slug属性/列没有做任何事情(它保持相同) 我发现只使用控制台的行为相同: p = Post.first p.slug #=> 'test' p.slug = 'another-test' p.save #=> true p.slug #=> 'test 我的配置: FriendlyId.defaults do |config| config.use :reserved config.reserved_words = %w(admin new edit index session users register) config.use :finders config.use :slugged config.slug_column = 'slug' config.sequence_separator = '-' config.use Module.new { def should_generate_new_friendly_id? slug.blank? || slug_changed? end } end 我的模特: class Post < ActiveRecord::Base default_scope { order('created_at DESC') } validates :title,presence: true validates :body,presence: true validates :views,presence: true,numericality: { only_integer: true } extend FriendlyId friendly_id :title,use: [:slugged,:history] end 我的控制器: class PostsController < ApplicationController def index @posts = Post.all.page(params[:page]).per(10) end def show @post = Post.find_by_slug!(params[:id]) if request.path != post_path(@post) redirect_to @post,:status => :moved_permanently and return else @post.increment :views if @post end end end 谢谢! 解决方法
通常在使用友好ID时,您永远不会手动更新slug.代替:
def should_generate_new_friendly_id? slug.blank? || title_changed? end 然后每次更改标题时,它都会自动更新slug. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |