首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >post模型中before_save的未定义方法错误

post模型中before_save的未定义方法错误
EN

Stack Overflow用户
提问于 2018-06-09 03:43:27
回答 1查看 62关注 0票数 0

我有一个post模型,在这个模型中我试图实现一个before_save调用,这样我就可以在将表单输入保存到数据库之前操作它。我尝试的任何东西都会抛出一个错误,无论是downcase、parameterize、gsub还是split。每次我都会得到一个undefined method 'downcase' for错误。只要用我想做的事情来代替大写就行了。我所要做的就是接受用户输入的任何内容,并用下划线替换空格。

这里是Post模型的一个版本。

代码语言:javascript
复制
class Post < ApplicationRecord
  belongs_to :user
  has_many :comments, dependent: :destroy
  before_save :permalink_tag
  strip_attributes

  acts_as_taggable

  private
  def permalink_tag 
    self.tag_list = self.tag_list.split(' ').join('_') unless self.tag_list.nil?
  end
end

现在,您可以简单地将permalink_tag方法中的代码替换为这些替代方法中的任何一个,但它仍然会导致错误。

代码语言:javascript
复制
self.tag_list.gsub(/\s+/, "_")
before_save { |post| post.tag_list = post.tag_list.downcase }
self.tag_list.parameterize.underscore

更详细的错误:

代码语言:javascript
复制
NoMethodError in PostsController#update
undefined method `downcase' for ["sample-tag"]:ActsAsTaggableOn::TagList

应用程序跟踪:

代码语言:javascript
复制
app/models/post.rb:4:in `block in <class:Post>'
app/controllers/posts_controller.rb:45:in `block in update'
app/controllers/posts_controller.rb:44:in `update'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 04:04:09

知道这是gem的一个问题,我能够在他们的文档中找到答案。

代码语言:javascript
复制
ActsAsTaggableOn.force_lowercase = true
ActsAsTaggableOn.force_parameterize = true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50767460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档