agged_with(params )ArgumentError:参数个数错误(给定2,预期为1)

我在Rails 5 beta 3中遇到了gem acts-as-taggable-on的问题。

project.rb

class Project < ActiveRecord::Base acts_as_taggable acts_as_taggable_on :skills end 

的routes.rb

 get 'tags/:skill', to: 'projects#index', as: :skill 

projects_controller.rb

 class ProjectsController < ApplicationController def index if params[:category] && Category.exists?(params[:category]) @category = Category.find(params[:category]) @projects = @category.projects.order("projects.created_at DESC") elsif params[:skill] @projects = Project.tagged_with(params[:skill]) else @projects = Project.all end @categories = Category.all end end 

在线@projects = Project.tagged_with(params[:skill])我收到以下错误:

ArgumentError:来自/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.0.beta3/lib/active_record/sanitization.rb:8:in的参数数量错误(给定2,预期为1) `的sanitize”

看起来tagged_with在内部调用quote_value ,这是sanitizealias_method

sanitize只需要一个参数,但quote_value使用两个参数调用quote_value ,这会导致问题。

请参阅acts_as_taggable , ActiveRecord :: Sanitization以及引入此更改的提交 。

他们修好了。 从您的Gemfile中的master分支下载:

 gem 'acts-as-taggable-on', :github => 'mbleigh/acts-as-taggable-on', :branch => 'master'