【问题标题】:undefined method `find_by_friendly_id' with FriendlyId gem and Rails 5.1带有 FriendlyId gem 和 Rails 5.1 的未定义方法“find_by_friendly_id”
【发布时间】:2017-11-11 21:52:16
【问题描述】:

我想阻止用他的id 选择用户,这就是为什么我使用这种应该以这种方式工作的方法,但我收到了这个错误:

未定义的方法`find_by_friendly_id' ...

这是用户模型:

include FriendlyId
friendly_id :name, :use => [:slugged, :finders]

和控制器:

def show
    @user= User.find_by_friendly_id(params[:slug])
end

我在表格中有slug 列。

我正在使用最新版本的 gem - 5.1.0

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2 friendly-id


    【解决方案1】:

    不要忘记生成和数据库 slug

    #rails generate friendly_id
    #rake db:migrate
    

    .模型

    extend FriendlyId
    friendly_id :permalink, use: [:slugged, :history, :finders]
    

    .控制器

    @post = Post.find(params[:id])
    

    更新:

    我个人使用永久链接作为刺痛专栏。

    validates_presence_of :permalink
    validates_uniqueness_of :permalink, case_sensitive: false
    validates :permalink, presence: true, uniqueness: true, :length => {minimum: 4}
    
    def should_generate_new_friendly_id?
        permalink_changed?
    end
    

    【讨论】:

    • 我有这个专栏。使用find 方法可以正常工作。问题在于我想使用的find_by_friendly_id 方法,因为它仅适用于slug 作为参数,但不适用于id
    • @gdfgdfg 你为什么要使用find_by_friendly_id ,并更新了我的答案?
    • 我想要因为find_by_friendly_id,如果你有用户/id url(id 是用户 id)并且你把这个 id 作为参数传递给方法你不会得到任何结果,因为它有效只有蛞蝓。 find 方法同时适用于 - id 和 slug。如果您将 id 传递给 find 方法,您将得到结果。这意味着用户可以理解他的 id 是什么,这是我不想要的。我在这个表中有 slug 列,字符串类型。
    • 现在我正在使用Rails提供的find_by_slug方法。
    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多